现在的位置: 首页 > 综合 > 正文

网络编程之TCP网络程序

2013年12月05日 ⁄ 综合 ⁄ 共 1433字 ⁄ 字号 评论关闭

 

之前介绍过UDP网络程序,现在我们来看一下TCP网络程序,需要了解以下几点:

l  TCP网络程序的工作原理

l  ServerSocket

l  Socket

 

首先来看下工作原理。

 

利用UDP通信的2个网络程序是平等的,没有主从之分,这2个程序完全可以是同一个程序的2个运行实例。而利用TCP通信的2个网络程序,是有主从之分的,一个称为服务器程序,另外一个称之为客户端程序。必须先有服务器端,客户端执行相关操作。它们之间的交互过程如下图:

 

 

 

(1)       服务器程序创建一个ServerSocket,然后调用accept方法等待客户端来连接

(2)       客户端程序创建一个Socket并请求与服务器建立连接。

(3)       服务器接收客户端的连接请求,并创建一个新的Socket与该客户端建立专线连接。

(4)       建立了连接的2Socket在一个单独的线程(由服务器程序创建)上对话。

(5)       服务器开始等待新的连接请求,当新的连接请求到达时,重复步骤(2)到(5)的过程。

 

下面我们来看一下服务器端ServerSocket类相关的信息。

 

常用构造函数有以下几个:

--ServerSocket() 创建非绑定服务器套接字。

--ServerSocket(int port) 创建绑定到特定端口的服务器套接字。

--ServerSocket(int port, int backlog) 利用指定的 backlog 创建服务器套接字并将其绑定到指定的本地端口号。

--ServerSocket(int port, int backlog, InetAddress bindAddr) 使用指定的端口、侦听 backlog 和要绑定到的本地 IP 地址创建服务器。

 

常用方法如下:

. bind(SocketAddress endpoint) ServerSocket 绑定到特定地址(IP 地址和端口号)。

. close() 关闭此套接字,释放占用资源。

. accept() 侦听并接受到此套接字的连接。

 

下面是客户端Socket类的常用构造函数:

--Socket() 通过系统默认类型的 SocketImpl 创建未连接套接字

--Socket(InetAddress address, int port) 创建一个流套接字并将其连接到指定 IP 地址的指定端口号。

--Socket(String host, int port) 创建一个流套接字并将其连接到指定主机上的指定端口号。

--Socket(InetAddress address, int port, InetAddress localAddr, int localPort)

          创建一个套接字并将其连接到指定远程地址上的指定远程端口。

--Socket(String host, int port, InetAddress localAddr, int localPort)

          创建一个套接字并将其连接到指定远程主机上的指定远程端口。

 

常用方法:

.connect(SocketAddress endpoint) 将此套接字连接到服务器。

.close() 关闭此套接字。

.getInputStream() 返回此套接字的输入流。

.getOutputStream() 返回此套接字的输出流。

 

最后,需要注意的是,TCP服务器程序必须先启动执行,客户端程序才能 连接上服务器。

  

版权声明: 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。

抱歉!评论已关闭.