JAVA之TCP网络通讯
来源:互联网 发布:js math ceil 编辑:程序博客网 时间:2024/06/05 16:55
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(); } }}
运行时,要先启动服务端,然后启动客记户端,通常网络通讯会与多线程交织在一起。
0 0
- JAVA之TCP网络通讯
- Java Web之网络通讯
- JAVA之UDP网络通讯
- java关于Tcp网络通讯简单介绍
- java网络通讯(UDP与TCP)
- 黑马程序员java之网络通讯
- 计算机网络之TCP/IP协议(网络通讯协议)
- 黑马程序员--java基础之网络通讯
- 【黑马程序员】Java基础12:UDP和TCP的网络通讯
- java网络通讯
- java 网络通讯
- JAVA网络通讯
- java 网络通讯
- Tcp/Ip网络通讯初探
- 网络通讯TCP/UDP
- 网络通讯方式 ------ TCP、UDP
- TCP UDP协议网络通讯
- javaee学习日记之java基础之网络通讯
- cocoaPods执行update时候报错 error: RPC failed; curl 56 SSLRead() return error -36
- 匿名内部类的使用
- <感悟1>
- 自定义dialog 可以读秒自动关闭
- 笑谈APP开发时间
- JAVA之TCP网络通讯
- Centos中改变MySQL的默认编码
- 多表连接的三种方式详解 HASH JOIN MERGE JOIN NESTED LOOP【3】
- [LeetCode]Two Sum II - Input array is sorted
- OpenGL 纹理坐标 和 顶点坐标映射关系 详解
- 如何解决JsonObject无序的问题
- [LeetCode]216. Combination Sum III
- Hadoop实战之三~ Hello World
- 分治法合并排序(C++)