java Socket TCP通讯

TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能。

java利用Socket与ServerSocket来实现TCP数据的传输;

ServerSocket:此类实现服务器套接字。服务器套接字等待请求通过网络传入。它基于该请求执行某些操作,然后可能向请求者返回结果

Socket:此类实现客户端套接字(也可以就叫“套接字”)。套接字是两台机器间通信的端点

一、客户端代码步骤:

1、构建Socket对象:

Socket s = new Socket(InetAddress.getLocalHost(), 10005);
参数a、要连接的ServerSocket的服务器网络地址

b、要连接的端口号

2、获取输出流向服务器端发送数据

OutputStream out = s.getOutputStream();
<span style="white-space:pre">		</span>out.write("haha".getBytes());

二、服务端代码步骤:

1、构建ServerSocket对象:

ServerSocket ss = new ServerSocket(10005);
2、等待客户端的连接:

Socket socket = ss.accept();

示:客户端简单例子:

public static void Send() {
		try {
			Socket s = new Socket(InetAddress.getLocalHost(), 11112);//创建Socket对象
			BufferedReader br = new BufferedReader(new InputStreamReader(
					System.in));//获取键盘存入
			//BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
			PrintWriter pw = new PrintWriter(s.getOutputStream(),true);//向服务器端发送数据的流
			String line = null;
			BufferedReader in = new BufferedReader(new InputStreamReader(
					s.getInputStream()));//读取服务器端的数据流
			while ((line = br.readLine()) != null) {
				if ("over".equals(line)) {
					break;
				}
				//bw.write(line);
				//bw.newLine();
				//bw.flush();
				pw.println(line);
				System.out.println(in.readLine());
			}
			br.close();
			s.close();
		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
示:服务器端的简单例子

public static void rece() {
		try {
			ServerSocket ss = new ServerSocket(11112);//创建ServerSocket并监听11112端口
			Socket s = ss.accept();//接受客户端连接,如果要连接多个可用while(true)并开起线程管理
			System.out.println(s.getInetAddress().getHostAddress()+"上线了");
			BufferedReader br = new BufferedReader(new InputStreamReader(
					s.getInputStream()));
			BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
			PrintWriter pw = new PrintWriter(s.getOutputStream());
			String line = null;
			while ((line = br.readLine()) != null) {
				System.out.println(line);
				//pw.println(line.toUpperCase());
				bw.write(line.toUpperCase());
				bw.newLine();
				bw.flush();
			}

		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的 Java Socket TCP 通讯程序的示例: ```java import java.net.*; import java.io.*; public class TcpServer { public static void main(String[] args) throws IOException { // 创建一个 ServerSocket 实例来监听指定的端口 int portNumber = 12345; try (ServerSocket serverSocket = new ServerSocket(portNumber)) { // 等待连接请求 System.out.println("等待客户端连接..."); try (Socket clientSocket = serverSocket.accept()) { System.out.println("客户端已连接:" + clientSocket.getInetAddress().getHostName()); // 获取输入输出流 PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true); BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); // 读取客户端发来的消息并回复 String inputLine; while ((inputLine = in.readLine()) != null) { System.out.println("客户端发来消息:" + inputLine); out.println("服务器回复:" + inputLine); } } } catch (IOException e) { System.err.println("无法在端口 " + portNumber + " 上启动服务器:" + e.getMessage()); } } } ``` 以上代码创建了一个 TCP 服务器,监听端口号为 12345,等待客户端连接。一旦有客户端连接,就获取其输入输出流,读取客户端发来的消息并回复。 以下是一个简单的 TCP 客户端的示例: ```java import java.net.*; import java.io.*; public class TcpClient { public static void main(String[] args) throws IOException { String hostName = "localhost"; int portNumber = 12345; try (Socket socket = new Socket(hostName, portNumber); PrintWriter out = new PrintWriter(socket.getOutputStream(), true); BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));) { System.out.println("已连接服务器:" + hostName); // 发送消息给服务器 String message = "Hello, server!"; System.out.println("发送消息给服务器:" + message); out.println(message); // 读取服务器回复的消息 String response; while ((response = in.readLine()) != null) { System.out.println("服务器回复消息:" + response); } } catch (UnknownHostException e) { System.err.println("无法连接服务器:" + hostName); System.exit(1); } catch (IOException e) { System.err.println("无法连接服务器:" + hostName); System.exit(1); } } } ``` 以上代码创建了一个 TCP 客户端,连接到指定的服务器和端口号,发送一条消息给服务器,然后读取服务器回复的消息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值