Socket网络编程详解

来源:互联网 发布:史丹利快报的淘宝店 编辑:程序博客网 时间:2024/04/24 13:39

网络编程基础知识:

当两台主机想要互相交流时:

①  各自需要拥有唯一的标识,来表明各自的身份,位置(IP地址)

②  拥有可以相互交流的语言(协议)

③  每台主机相应的端口号(端口号用来区分主机上的多种程序的运行)

 

IP地址:每台主机的唯一标识。

端口:区分不同的应用程序(唯一的端口号),范围0~65535.其中,0~1023为系统保留使用。

IP地址加上端口号组成所谓的Socket。Socket是网络上运行的程序之间的双向通信链路的终结点,是TCP和UDP的基础。

固定的端口号:HTTP:80   FTP:21 Telnet:23

 

TCP/IP协议:目前世界上应用最为广泛的协议。也称:TCP/IP协议族或TCP/IP协议栈。

TCP:传输控制协议             IP:互联网协议

HTTP:超文本传输协议          FIP:文本传输协议

SMTP:简单邮件传送协议         Telnet:远程登录服务

 

TCP/IP协议:

①  应用层:HFTP  , HTTP , SNMP  ,FTP  ,SMTP ,DNS  ,Telent 

②  传输层:TCP  ,UDP

③  网络层:IP  ,ICMP ,OSPF  ,EIGRP  ,IGMP

④  数据链路层:SLIP  ,CSIP ,PPP  ,MTO

每一抽象层建立在低一层提供的服务上,并且为高一层服务。

针对网络通信的不同层次,java提供的网络功能有四大类:

①  InetAddres:用于标识与网络上的硬件资源,表示互联网协议(IP)地址。

②  URL:统一资源定位符,通过URL直接读取或者写入网络上的数据。

③  Socket:使用TCP协议实现的网络通信的Socket相关的类。

④  Datagram:使用UDP协议,将数据保存在数据报中,通过网络进行通信。

 

URL:由两部分组成。①协议名称  ②资源名称。中间用”://”隔开。

1.     通过URL对象的openStream()方法可以得到指定资源的输入流

2.     通过输入流可以读取或访问网上的资源。

 

TCP协议面向连接、可靠的、有序的,以字节流的方式发送数据。

基于TCP协议的实现网络通信的类:

①  客户端的Socket类

②  服务器端的ServerSocket类

Socket编程之Server篇

1. 建立服务器端Socket,即ServerSocket,指定绑定的端口,并监听此端口。

2. 调用accept()方法开始监听,等待客户端的连接。(等待过程中,处于堵塞状态)

3. 获取输入流,并读取客户端信息。

4. 获取输出流,响应客户端请求。

5. 关闭响应资源。

 

Socket编程之Client篇

1. 创建客户端Socket,指定服务器地址和端口号。

2. 获取输出流,向服务器端发送信息。

3. 获取输入流,并读取服务器端的响应信息。

4. 关闭响应资源。

 

服务器端须早于客户端启动     本地服务器:localhost

注意:

多线程的优先级:

    未设置优先级的,可能导致运行时速度非常慢,可减低优先级。

对于同一个Socket,如果关闭了输出流,则与该输出流关联的Socket也会被关闭,所以一般不用关闭流,直接关闭Socket


0 0