什么是Socket
通信链的句柄,用于描述IP 地址和接口。应用程序通常通过Socket 向网络发出请求或者应答网络请求。
Socket 基本通信模型

使用基于TCP 协议的Socket

【服务器】
建立Socket ,建立一个新的线程,在线程中创建一个ServerSocket 对象,设置监听指定端口号。
ServerSocket serverSocket = new ServerSocket(xxxx);
调用ServerSocket 的accept() 方法,接受客户端发送的请求,建立一个InputStream 对象,调用socket 的getInputStream() 方法获得信息流。而在线程中,accpet 方法是阻塞的方法,直到有联系之后才启动线程。
ServerSocket socket = serverSocket.accept();InputStream inputstream = socket.getInputStream();同理,可以获得outputStream。OutputStream outputSream = socket.getOutputStream();
最后调用close() 方法关闭socket。
【客户端】
建立Socket 对象,指定服务器端的IP 地址和端口号,调用getOutpuStream 方法产生outputStream 对象,从而读取数据。
Socket socket = new Socket("IP...", xxxx);InputStream inputStream = new FileInputStream("地址");OutputStream outputStream = socket.getOutputStream();
使用基于UDP 协议的Socket
【服务器】
创建一个DatagramSocket 类型对象,指定端口号。创建一个空的DatagramPacket 对象,调用receive 方法,并传入空的DatagramPacket 对象。其中,receive 方法和TCP 协议中的accept 方法一样,都是阻塞线程的方法。
DatagramSocket socket = new DatagramPacket(xxx);byte data[] = new byte[1024];DatagramPacket packet = new DatagramPacket(data, data.length);socket.receive(packet);
【客户端】
创建一个DatagramSocket 对象,指定端口,再创建地址对象,调用getByName 方法指定地址。
DatagramSocket socket = new DatagramSocket();InetAdress inetadress = InetAdress.getByName("地址");String str ="xxx";DatagramPacket packet = new DatagramPacket(data, data.length, inetadress, 端口号);Socket.send(packet);
本文详细介绍了Socket的基本概念及其在TCP和UDP协议下的应用。对于TCP协议,服务器端通过创建ServerSocket对象监听指定端口并接收客户端连接请求;客户端则通过创建Socket对象指定服务器IP和端口发起连接。而在UDP协议中,服务器创建DatagramSocket监听端口,客户端同样创建DatagramSocket并通过DatagramPacket发送数据。
3950

被折叠的 条评论
为什么被折叠?



