Socket编程基本概念----imooc(1)
2016-09-19 00:40
387 查看
这俩天在学多线程,http相关的知识,感觉慕课网不错,听听记记
Socket编程基本概念—-imooc(1)
Socket编程基本概念—-imooc(2)
Socket编程基本概念—-imooc(3)
http://www.imooc.com/learn/161
Socket编程
课程简介
网络基础知识
InetAddress
java中的URL应用
socket简介
编程实现基于TCP的Socket通信实现用户登录
InetAddress类
URL
TCP编程
UDP编程
IP地址 (电脑的名字,唯一的)(比如:手机号码)
协议 (沟通的语言)
端口 (一台电脑运行不同应用的标识,区分不同应用程序)(比如:http:80 ftp:20 telnet:23)
TCP/IP协议
是目前世界上应用最广泛的协议
是以TCP和IP为基础的不同层次上多个协议的集合
TCP : Transmission Control Protocol 传输控制协议
IP:Internet Protocol 互联网协议
TCP/IP模型
1层物理层 :网线,网卡
4层传输层 (TCP IP)
5层应用层 (HTTP (超文本传输协议)FTP(文件传输协议)SMTP(简单邮件传送协议)Telnet(远程登录服务))
socket
IP地址和端口号组成了socket
socket是网络上运行的程序之间双向通信链路的终结点,是TCP 和 UDP的基础
java 中的网络支持
InetAddress : 用于标识网络上的硬件资源
URL:统一资源定位符 通过URL可以直接读取与写入网络上的数据
Scorck:使用TCP协议实现网络通信的Socket相关的类
Dategram:使用UDP协议,将数据保存在数据报中,通过网络进行通信
实例:
output:
URL由俩部分组成:协议名称和资源名称,中间用冒号隔开
java.net包中,提供了URL类来表示URL
URL实例1
output:
使用URL读取网页内容
通过URL对象中的 openStream()方法可以得到指定资源的输入流
通过输入流可以读取 访问网络上的数据
output:
Socket通信实现步骤
创建ServerSocket和Socket
打开连接到Socket的输入/输出流
按照协议对Socket进行读/写操作
关闭输入输出流、关闭Socket
创建ServerSocket对象,绑定监听端口
通过accept()方法监听客户端请求
连接建立后,通过输入流读取客户端发送的请求
通过输出流向客户端发送响应信息
关闭相关资源
客户端:
创建Socket对象,指明需要连接的服务器的地址和端口号
连接建立后,通过输出流向服务器端发送请求信息
通过输入流获取服务器相应的信息
关闭相关资源
output: (first run Server.java)
Socket编程
@(JAVA)Socket编程基本概念—-imooc(1)
Socket编程基本概念—-imooc(2)
Socket编程基本概念—-imooc(3)
http://www.imooc.com/learn/161
Socket编程
课程简介
网络基础知识
InetAddress
java中的URL应用
socket简介
编程实现基于TCP的Socket通信实现用户登录
课程简介
网络基础知识InetAddress类
URL
TCP编程
UDP编程
网络基础知识
俩台计算机通过网络进行通信的3个必备条件IP地址 (电脑的名字,唯一的)(比如:手机号码)
协议 (沟通的语言)
端口 (一台电脑运行不同应用的标识,区分不同应用程序)(比如:http:80 ftp:20 telnet:23)
TCP/IP协议
是目前世界上应用最广泛的协议
是以TCP和IP为基础的不同层次上多个协议的集合
TCP : Transmission Control Protocol 传输控制协议
IP:Internet Protocol 互联网协议
TCP/IP模型
1层物理层 :网线,网卡
4层传输层 (TCP IP)
5层应用层 (HTTP (超文本传输协议)FTP(文件传输协议)SMTP(简单邮件传送协议)Telnet(远程登录服务))
socket
IP地址和端口号组成了socket
socket是网络上运行的程序之间双向通信链路的终结点,是TCP 和 UDP的基础
java 中的网络支持
InetAddress : 用于标识网络上的硬件资源
URL:统一资源定位符 通过URL可以直接读取与写入网络上的数据
Scorck:使用TCP协议实现网络通信的Socket相关的类
Dategram:使用UDP协议,将数据保存在数据报中,通过网络进行通信
InetAddress
没有构造函数实例:
import java.net.InetAddress; import java.net.UnknownHostException; /** * Created by zhangzexiang on 2016/9/15. */ public class InetAddressTest { public static void main(String[] args) throws UnknownHostException { InetAddress address = InetAddress.getLocalHost(); System.out.println("computer name: "+address.getHostName()); System.out.println("computer ip: "+address.getHostAddress()); } }
output:
computer name: idea-PC computer ip: 169.254.195.114 Process finished with exit code 0
java中的URL应用
URL(Uniform Resource Locator) 统一资源定位符,表示Internet上某一资源的地址URL由俩部分组成:协议名称和资源名称,中间用冒号隔开
java.net包中,提供了URL类来表示URL
URL实例1
package imooc.socket; import java.net.MalformedURLException; import java.net.URL; /** * Created by zhangzexiang on 2016/9/15. */ public class URLTest { public static void main(String[] args) throws MalformedURLException { //create a URL example URL imooc = new URL("http://www.imooc.com"); URL url = new URL(imooc, "/index.html?username=tom#test"); //?后面表示参数,#后面表示瞄点 System.out.println("协议:"+url.getProtocol()); System.out.println("主机:"+url.getHost()); //如果未指定端口号,则使用默认的端口号,此时getPork()方法返回值为-1 System.out.println("端口:"+url.getPort()); System.out.println("文件路径:"+url.getPath()); System.out.println("文件名:"+url.getFile()); System.out.println("相对路径:"+url.getRef()); System.out.println("查询字符串:"+url.getQuery()); } }
output:
协议:http 主机:www.imooc.com 端口:-1 文件路径:/index.html 文件名:/index.html?username=tom 相对路径:test 查询字符串:username=tom
使用URL读取网页内容
通过URL对象中的 openStream()方法可以得到指定资源的输入流
通过输入流可以读取 访问网络上的数据
package imooc.socket; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URL; /** * Created by zhangzexiang on 2016/9/15. * * URL读取网页内容 */ public class URLTest2 { public static void main(String[] args){ try { //create URL ex URL url = new URL("http://www.baidu.com"); //通过 URL 的 openStream 方法获取URL对象所表示的资源的字节输入流 InputStream is = url.openStream(); //将字节输入流转换为字符输入流 InputStreamReader isr = new InputStreamReader(is,"utf-8"); //为字符输入流添加缓冲(加快速度?) BufferedReader br = new BufferedReader(isr); String data = br.readLine();//读取数据 while(data!=null){//循环读取数据 System.out.println(data);//输出数据 data = br.readLine(); } br.close();//close BufferedReader isr.close(); // close InputStreamReader 关闭字符输入流 is.close(); //close InputStream 关闭字节输入流 } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
output:
输出内容为baidu.com的.html文件内容
socket简介
TCP协议是面向连接、可靠的、有序的、以字节流的方式发送数据Socket通信实现步骤
创建ServerSocket和Socket
打开连接到Socket的输入/输出流
按照协议对Socket进行读/写操作
关闭输入输出流、关闭Socket
编程实现基于TCP的Socket通信,实现用户登录
服务器端:创建ServerSocket对象,绑定监听端口
通过accept()方法监听客户端请求
连接建立后,通过输入流读取客户端发送的请求
通过输出流向客户端发送响应信息
关闭相关资源
客户端:
创建Socket对象,指明需要连接的服务器的地址和端口号
连接建立后,通过输出流向服务器端发送请求信息
通过输入流获取服务器相应的信息
关闭相关资源
package imooc.socket; import java.io.*; import java.net.ServerSocket; import java.net.Socket; /** * Created by zhangzexiang on 2016/9/17. * * 编程实现基于TCP的Socket通信,实现用户登录 * * 服务器端 */ public class Server { public static void main(String[] args){ try { //1 创建一个服务器段的Socket,即ServerSocket,指定绑定的端口,并监听此端口 ServerSocket serverSocket = new ServerSocket(8888); //2 调用accept()方法开始监听,等待客户端的连接 System.out.println("***server is beginning,wait client ***"); Socket socket = serverSocket.accept(); //3 获取输入流,并读取客户端信息 InputStream is = socket.getInputStream();//字节输入流 InputStreamReader isr = new InputStreamReader(is);//将字节流转换为字符流 BufferedReader br = new BufferedReader(isr);//为输入流添加缓冲 String info = null; while((info=br.readLine())!=null){//循环读取客户端的信息 System.out.println("我是服务器,客户端说:"+info); } socket.shutdownInput();//关闭输入流 //4 获取输出流,响应客户端的请求 OutputStream os = socket.getOutputStream(); PrintWriter pw = new PrintWriter(os); //包装为打印流 pw.write("welcome!"); pw.flush();//调用flush()方法将缓冲输出 //5 关闭资源 pw.close(); os.close(); br.close(); isr.close(); is.close(); socket.close(); serverSocket.close(); } catch (IOException e) { e.printStackTrace(); } } }
package imooc.socket; import java.io.*; import java.net.Socket; /** * Created by zhangzexiang on 2016/9/17. * * * 编程实现基于TCP的Socket通信,实现用户登录 * * 客户端 */ public class Client { public static void main(String[] args) { try { //1 创建客户端Socket,指定服务器地址和端口 Socket socket = new Socket("localhost",8888); //2 换取输出流,向服务器端发送信息 OutputStream os = socket.getOutputStream();//字节输出流 PrintWriter pw = new PrintWriter(os); //将输出流包装为打印流 pw.write("username:admin;password:123"); pw.flush(); socket.shutdownOutput();//colse outputStream //3 获取输入流,并读取服务器端的相应消息 InputStream is =socket.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String info = null; while((info=br.readLine())!=null){//循环读取服务端的信息 System.out.println("我是客户端,服务器说:"+info); } //4 colse resource br.close(); is.close(); pw.close(); os.close(); socket.close(); } catch (IOException e) { e.printStackTrace(); } } }
output: (first run Server.java)
***server is beginning,wait client *** 我是服务器,客户端说:username:admin;password:123
我是客户端,服务器说:welcome!
相关文章推荐
- Socket编程基本概念----imooc(2)
- Socket编程基本概念----imooc(3)
- 黑马程序员--10.网络编程--02.【网络传输三要素在Java中的体现】【TCP和UDP概念】【Socket基本概念】
- 网络编程 ——socket基本概念
- socket 网络编程基本的概念
- C# Socket编程(1)基本的术语和概念
- Linux网络编程学习笔记(3)---socket编程中的基本概念
- C# Socket编程(1)基本的术语和概念
- socket编程--socket基本概念
- socket编程--socket基本概念
- C# Socket编程(1)基本的术语和概念
- Beej网络socket编程指南——基本概念(2)
- Java Socket编程(一) Socket编程原理及基本概念
- Socket编程实践(1) 基本概念
- 关于网络协议和socket编程基本概念
- DotNET(C#) Socket基本编程 (转)
- socket基本概念及网络协议模型
- AOP 面向方面编程的介绍----基本概念(2)
- 最基本的Socket编程 C#版 [转]
- 最基本的Socket编程 C#版