1、TCP通信
TCP通信,Java提供了2个类用来实现tcp通信程序:
1、java.net.Socket 创建Socket对象,用来建立和服务器的连接,发送请求,接收响应;
2、java.net.ServerSocket,创建ServerSocket对象,启动tcp服务程序;
1、客户端和服务器建立一条逻辑连接,连接种包含一个对象,一个IO对象;
2、客户端和服务器使用这个对象进行通信,通信数据不仅仅是字符,所以IO对象是字节流;
1、服务端使用accept方法获取客户端对象,明确和哪个客户端进行通信;
socket构造方法:
socket(String host,int port)创建一个流套接字,并将其连接到指定主机的指定端口
成员方法:
OutputStream getOutputStream()返回此套接字的输出流
inputStream getInputStream()返回此套接字的输入流
void close()关闭套接字
ServerSocket构造方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; public class TcpServer1 { public static void main(String[] args) throws IOException{ //创建服务器 serverSocket 对象,指定绑定端口后 ServerSocket serverSocket = new ServerSocket( 8888 ); //使用 serverSocket 引用,调用accept方法,进行侦听,获取客户端请求的 socket Socket socket = serverSocket.accept(); //使用 Socket 对象中的 getInputStream 方法,获取网络字节输入流 InputStream 对象, InputStream is = socket.getInputStream(); //使用 InputStream引用调用方法 read,读取客户端发送的数据流; byte [] bytes = new byte [ 1024 ]; int len = is.read(bytes); //打印获取的数据 System.out.println( new String(bytes, 0 , len)); //使用 Socket 对象种的 getOutputStream 方法,获取网络字节输入流 OutputStream 对象, OutputStream os = socket.getOutputStream(); //返回给客户端信息 os.write( "收到信息" .getBytes()); //释放资源 socket.close(); serverSocket.close(); } } |
import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.InetAddress; import java.net.Socket; public class TcpClient1 { public static void main(String[] args) throws IOException{ //1、创建socket对象,连接指定服务器IP和Port Socket socket = new Socket(InetAddress.getLocalHost(),8888); //2、使用socket引用,调用getOutputStream方法,获取OutputStream对象,调用write方法写数据 socket.getOutputStream().write("你好".getBytes()); //3、使用OutputStream引用,调用OutputStream中的write方法,给服务器发数据 //os.write("你好".getBytes()); //4、使用socket引用,调用getInputStream方法,获取getInputStream对象 InputStream is = socket.getInputStream(); //5、使用InputStream引用,调用InputStream中的read方法,获取服务器返回的数据 byte[] bytes = new byte[1024]; int len = is.read(bytes); System.out.println(new String(bytes,0,len)); //6、释放资源 socket.close(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】