最后更新:2022-02-21 22:13:04 手机定位技术交流文章
Socket
TCP网络通信编程
示例(基于TCP协议实现服务端和客户端的网络通信)
需要通讯时:(读写数据)

-客户端:获得服务端的InetAddress对象(ip)和服务端所监听的端口号,将数据传入数据通道 -服务端:设置端口号(此端口号不能被其他程序占用),监听此端口号,如果有客户端向此端口的数据通道发送数据,进行接收,打印在命令行
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
/**
* 服务端
*/
public class SocketTCP01Server {
public static void main(String[] args) throws IOException {
//在9999端口监听
//注意:确保9999端口号没有被其他程序监听
// serverSocket可以多次accept,等待多个服务端的连接
ServerSocket serverSocket = new ServerSocket(9999);
System.out.println("服务端正在监听9999号端口,等待客户端发送数据...");
//当没有服务端连接9999端口时,程序会阻塞,等待连接
//当有服务端连接9999端口时,程序会继续,返回Socket对象
Socket socket = serverSocket.accept();
//通过输入流获取socket接收到的数据
InputStream inputStream = socket.getInputStream();
//读取输入流中的数据
byte[] bytes=new byte[1024];
int bytesLength=0;
while ((bytesLength=inputStream.read(bytes))!=-1){
System.out.print(new String(bytes,0,bytesLength));
}
System.out.println();
//关闭输入流
inputStream.close();
//关闭socket
socket.close();
//关闭serverSocket
serverSocket.close();
System.out.println("服务端退出");
}
}
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.nio.charset.StandardCharsets;
public class SocketTCP01Client {
public static void main(String[] args) throws IOException {
//获取服务端的ip和服务的端口号(这里服务端是本机,如果远程服务器,可以输入远程服务器的ip地,例如"192.168.56.1")
Socket socket = new Socket(InetAddress.getLocalHost(), 9999);
//通过输出流向服务端传输数据
OutputStream outputStream = socket.getOutputStream();
outputStream.write("hello,sever".getBytes(StandardCharsets.UTF_8));
//关闭输出流
outputStream.close();
//关闭socket
socket.close();
System.out.println("客户端退出");
}
}
开启服务端后:
服务端正在监听9999号端口,等待客户端发送数据...
开启客户端后: 客户端:
客户端退出
服务端:
服务端正在监听9999号端口,等待客户端发送数据...
hello,sever
服务端退出
本文由 在线网速测试 整理编辑,转载请注明出处。