我编写了一个服务器-客户端通信程序,运行良好。
客户端模块
import java.io.*;
import java.net.*;
class Client {
public static void main(String argv[]) throws Exception {
String sentence;
String modifiedSentence;
while(true){
BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
Socket clientSocket = new Socket("myname.domain.com", 2343);
DataOutputStream out = new DataOutputStream(clientSocket.getOutputStream());
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
System.out.println("Ready");
sentence = in.readLine();
out.writeBytes(sentence + '\n');
modifiedSentence = in.readLine();
System.out.println(modifiedSentence);
}
clientSocket.close();
}
}
服务器模块
import java.net.*;
public class Server {
public static void main(String args[]) throws Exception {
String clientSentence;
String cap_Sentence;
ServerSocket my_Socket = new ServerSocket(2343);
while(true) {
Socket connectionSocket = my_Socket.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
DataOutputStream out = new DataOutputStream(connectionSocket.getOutputStream());
clientSentence = in.readLine();
cap_Sentence = "Raceived:" + clientSentence + '\n';
out.writeBytes(cap_Sentence);
}
}
}
上面是单个客户机-服务器通信的代码,现在我希望多个客户端与服务器交互。我在googled上搜索了一下,发现每个客户端都可以使用一个线程来与服务器对话,但是由于我是初学者,所以我不知道如何实现。所以谁来告诉我该怎么做或者给我一些想法。
发布于 2011-03-24 04:58:00
MainServer类
public class Server {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = null;
boolean listeningSocket = true;
try {
serverSocket = new ServerSocket(2343);
} catch (IOException e) {
System.err.println("Could not listen on port: 2343");
}
while(listeningSocket){
Socket clientSocket = serverSocket.accept();
MiniServer mini = new MiniServer(clientSocket);
mini.start();
}
serverSocket.close();
}
}
帮助者阶级
public class MiniServer extends Thread{
private Socket socket = null;
public MiniServer(Socket socket) {
super("MiniServer");
this.socket = socket;
}
public void run(){
//Read input and process here
}
//implement your methods here
}
发布于 2011-03-24 04:50:38
你想调查一下Java并发。这就是一个Java程序同时做多件事情的概念。在较高的级别上,您将把while(true) { //... }
块作为实现可运行的类的run()
方法的一部分来运行。您将创建调用该线程方法的run()
实例,可能每个客户机都会调用该方法。
要真正深入地理解Java在并发方面提供的所有内容,请查看Java并发在实践中的应用。
发布于 2011-03-24 04:55:55
当我这样做时,我实现了一个管理服务器端的侦听器,所以当客户机(客户机可能不需要更改)连接时,服务器启动一个线程来处理该客户机。
while (!stop)
{
socket = serverSocket.accept();
HiloSocket hiloSocket = new HiloSocket(socket, this);
hiloSocket.start();
}
当然,HiloSocket扩展了线程,它有管理客户端的逻辑.
https://stackoverflow.com/questions/5419328
复制相似问题