TCP-Java-客户机/服务器应用程序例子

本文提供了一个简单的TCP客户端和服务器实现案例。客户端通过输入文本发送到服务器,服务器接收到文本后将其转换为大写并返回给客户端。该示例使用Java编写,包括创建Socket连接、读写数据等关键步骤。

TCP-Client:

import java.io.*;
import java.net.*;

public class Client {
	public static void main(String argv[]) throws Exception{
		String sentence;
		String modifiedSentence;
		BufferedReader inFromUser = 
				new BufferedReader(
						new InputStreamReader(
								System.in));
		Socket clientSocket = new Socket("localhost",6789);
		DataOutputStream outToServer = 
				new DataOutputStream(
						clientSocket.getOutputStream());
		BufferedReader inFromServer = 
				new BufferedReader(
						new InputStreamReader(
								clientSocket.getInputStream()));
		sentence = inFromUser.readLine();
		outToServer.writeBytes(sentence + '\n');
		modifiedSentence = inFromServer.readLine();
		System.out.println("FROM SERVER: " + 
				modifiedSentence);
		clientSocket.close();
	}
}

TCP-Server:

import java.io.*;
import java.net.*;

public class Server  {
	public static void main(String argv[]) throws IOException {
		String clientSentence;
		String capitalizedSentence;
		ServerSocket welcomeSocket = new ServerSocket(6789);
		while(true){
			Socket connectionSocket = welcomeSocket.accept();
			BufferedReader inFromClient = new BufferedReader(
					new InputStreamReader(
							connectionSocket.getInputStream()));
			DataOutputStream outToClient = new DataOutputStream(
					connectionSocket.getOutputStream());
			clientSentence = inFromClient.readLine();
			capitalizedSentence = clientSentence.toUpperCase() + '\n';
			outToClient.writeBytes(capitalizedSentence);
		}
	}
}
先运行 Server 再运行 Client.

Java中编写一个控制台式的TCP聊天程序需要使用Socket编程,这里是一个简单的例子来说明如何创建一个服务器,它能够同时处理多个客户端连接并支持"Bye"字句来结束会话: ```java import java.io.*; import java.net.*; public class ChatServer { private ServerSocket server; private ArrayList<PrintWriter> clients = new ArrayList<>(); public static void main(String[] args) throws IOException { ChatServer server = new ChatServer(); server.start(); } public void start() throws IOException { server = new ServerSocket(8000); // 设置监听端口 System.out.println("Server started on port 8000"); while (true) { // 无限循环接受新连接 Socket socket = server.accept(); new ClientHandler(socket).start(); // 创建新的ClientHandler线程处理每个连接 } } class ClientHandler extends Thread { private BufferedReader reader; private PrintWriter writer; public ClientHandler(Socket socket) throws IOException { reader = new BufferedReader(new InputStreamReader(socket.getInputStream())); writer = new PrintWriter(socket.getOutputStream(), true); clients.add(writer); } @Override public void run() { String message; try { while ((message = reader.readLine()) != null && !message.equals("Bye")) { for (PrintWriter client : clients) { if (client != writer) { // 发送给其他客户端,排除发送者 client.println(message); } } } // 如果收到"Bye", 移除该客户端 clients.remove(writer); System.out.println("Client disconnected: " + writer); } catch (IOException e) { e.printStackTrace(); } finally { if (writer != null) { writer.close(); } } } } } ``` 当客户端连接到服务器并发送一条消息时,除了发送给当前连接的客户端外,还会将消息广播给所有在线的其他客户端。当接收到"Bye"字符串时,服务器会从列表中移除对应的客户端,并关闭相关的输出流。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值