当前位置: 首页> 教育> 高考 > J030_TCP通信

J030_TCP通信

时间:2025/7/9 14:04:09来源:https://blog.csdn.net/lzn20161229/article/details/140895677 浏览次数:0次

一、需求描述

使用TCP协议进行通信

1.1 一发一收

1.1.1 Client

package com.itheima.tcp1;import java.io.DataOutputStream;
import java.io.OutputStream;
import java.net.Socket;public class Client {public static void main(String[] args) throws Exception {//1、创建socket对象,并同时请求与服务端程序的连接Socket socket = new Socket("127.0.0.1",8888);//2、从socket通信管道中得到一个字节输出流,用来发数据给服务端程序OutputStream os = socket.getOutputStream();//3、把低级的字节输出流包装成数据输出流DataOutputStream dos = new DataOutputStream(os);//4、开始写数据出去dos.writeUTF("你好啊哈哈哈哈哈");dos.close();//5、关闭通信管道释放资源socket.close();}
}

1.1.2 Server

package com.itheima.tcp1;import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;public class Server {//TCP协议通信public static void main(String[] args) throws Exception {//启动服务端System.out.println("-----服务端启动成功------");//1、创建serversocket对象,同时为服务端程序注册端口ServerSocket serverSocket = new ServerSocket(8888);//2、使用serverSocket对象,调用accept方法,等待客户端的连接请求Socket socket = serverSocket.accept();//3、从socket管道中得到一个字节输入流InputStream is = socket.getInputStream();//4、把原始的字节输入流包装成数据输入流DataInputStream dis = new DataInputStream(is);//5、使用数据输入流读取客户端发送过来的消息String res = dis.readUTF();System.out.println(res);//获取客户端的IP地址System.out.println(socket.getRemoteSocketAddress());dis.close();socket.close();}
}

1.1.3 运行结果

1.2 多发多收

1.2.1 Client

package com.itheima.tcp1;import java.io.DataOutputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;public class Client {public static void main(String[] args) throws Exception {//1、创建socket对象,并同时请求与服务端程序的连接Socket socket = new Socket("127.0.0.1",8888);//2、从socket通信管道中得到一个字节输出流,用来发数据给服务端程序OutputStream os = socket.getOutputStream();//3、把低级的字节输出流包装成数据输出流DataOutputStream dos = new DataOutputStream(os);Scanner sc = new Scanner(System.in);while (true) {System.out.println("请说:");String msg = sc.nextLine();//退出if ("exit".equals(msg)) {System.out.println("欢迎下次光临!退出成功");dos.close();socket.close();break;}//4、开始写数据出去dos.writeUTF(msg);dos.flush();}}
}

1.2.2 Server

package com.itheima.tcp1;import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;public class Server {//TCP协议通信public static void main(String[] args) throws Exception {//启动服务端System.out.println("-----服务端启动成功------");//1、创建serversocket对象,同时为服务端程序注册端口ServerSocket serverSocket = new ServerSocket(8888);//2、使用serverSocket对象,调用accept方法,等待客户端的连接请求Socket socket = serverSocket.accept();//3、从socket管道中得到一个字节输入流InputStream is = socket.getInputStream();//4、把原始的字节输入流包装成数据输入流DataInputStream dis = new DataInputStream(is);while (true) {try {//5、使用数据输入流读取客户端发送过来的消息String res = dis.readUTF();System.out.println(res);} catch (Exception e) {System.out.println(socket.getRemoteSocketAddress() + "离线了");dis.close();socket.close();break;}}}
}

1.2.3 运行结果

关键字:J030_TCP通信

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: