JAVA之TCP网络通讯

2017-01-13 15:04:11来源:csdn作者:true100人点击

第七城市
TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。
由IETF的RFC 793定义,在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能。
基于TCP网络通讯实现的类主要有服务器端的ServerSocket用客户端的Socket。通讯流程:
打开服务器,等待客户端连接-->客户端连接上服务器-->数据通讯。
代码实现步骤:创建服务器端(ServerSocket)对象或客户端(Socket)对象。
建立起服务器与客户端连接
通过输入输出流进行文件(数据)通讯
通讯结束 ,关闭资源 。 一个简单的小例子,服务端:
public class SocketServer {public static void main(String[] args) {
try {
// 创建一个服务器ServerSocket,并指定端口号为5120
ServerSocket mServerSocket = new ServerSocket(5120);
// 等待客户端连接
Socket socket = mServerSocket.accept();
// 连接上客户端后,获取客户端输入流信息
InputStream is = socket.getInputStream();
// 通过获取缓冲数据方式来读取文本信息
BufferedReader br = new BufferedReader(new InputStreamReader(is));
// 获取文本信息
String line;
StringBuffer sb = new StringBuffer();
while ((line = br.readLine()) != null) {
sb.append(line);
}
System.out.println(sb.toString());
socket.shutdownInput();
// 收到客户端信息后,回复客户端信息
OutputStream os = socket.getOutputStream();
PrintWriter pw = new PrintWriter(os);
pw.write("收到回复,我是服务端");
pw.flush();
// 关闭流通常放在finally中操作
os.close();
br.close();
is.close();
pw.close();
socket.close();
mServerSocket.close();
} catch (IOException e) {e.printStackTrace();
}
}}

客户端:

public class ClientSocket {public static void main(String[] args) {
try {
// 创建客户端Socket,指定主机和端口
Socket mSocket = new Socket("localhost", 5120);
// 通过输入流向服务器发数据
OutputStream os = mSocket.getOutputStream();
PrintWriter pw = new PrintWriter(os);
pw.write("来自客户端Socket的数据,你收到了吗?");
pw.flush();
mSocket.shutdownOutput();
// 收取服务端的回复信息
InputStream is = mSocket.getInputStream();
// 通过获取缓冲数据方式来读取文本信息
BufferedReader br = new BufferedReader(new InputStreamReader(is));
// 获取文本信息
String line;
StringBuffer sb = new StringBuffer();
while ((line = br.readLine()) != null) {
sb.append(line);
}
System.out.println(sb.toString());
// 关闭流通常放在finally中操作
br.close();
is.close();
pw.close();
os.close();
mSocket.close();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

运行时,要先启动服务端,然后启动客记户端,通常网络通讯会与多线程交织在一起。


第七城市

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台