如何在java套接字编程中使用单个服务器创建多个客户端?
我正在尝试遵循Java套接字编程。 我的目标是创建多个客户端线程,它们发布它们的状态 所有这些都由同一台服务器监听 像这样的 1.服务器启动 2.客户端A已启动 3.客户端B已启动 4.客户A向客户B问好 5.客户B向客户A问好 6.客户A对客户B说“Hi2” 7.客户B对客户A说“Hi2” 8.客户A对客户B说“Hi3” 9客户B对客户A说“Hi3” 10客户A已完成 11客户B已完成 到目前为止,我尝试的是:如何在java套接字编程中使用单个服务器创建多个客户端?,java,sockets,Java,Sockets,我正在尝试遵循Java套接字编程。 我的目标是创建多个客户端线程,它们发布它们的状态 所有这些都由同一台服务器监听 像这样的 1.服务器启动 2.客户端A已启动 3.客户端B已启动 4.客户A向客户B问好 5.客户B向客户A问好 6.客户A对客户B说“Hi2” 7.客户B对客户A说“Hi2” 8.客户A对客户B说“Hi3” 9客户B对客户A说“Hi3” 10客户A已完成 11客户B已完成 到目前为止,我尝试的是: MyServer.java App.java 它连接一个客户端,但第二个客户端未连
它连接一个客户端,但第二个客户端未连接。您的MyServer错误。它只接受一个客户机
try (ServerSocket s = new ServerSocket(...);) {
while (true) {
Socket conn = s.accept();
conn.getInetAddress().getHostName() + " : " + conn.getPort());
new ServerConnection(conn).start();
}
}
catch(IOException e) {
e.printStackTrace();
}
}
对于每一位客户来说,都是这样的
public class ServerConnection extends Thread {
private Socket client_socket;
public ServerConnection( Socket client_socket) {
this.client_socket = client_socket;
}
public void run() {
DataInputStream din = new DataInputStream(client_socket.getInputStream());
DataOutputStream dout = new DataOutputStream(client_socket.getOutputStream());
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = "", str2 = "";
int counter = 0;
while (!str.equals("stop") && counter < 10)
{
str = din.readUTF();
System.out.println("client says: " + str);
//str2 = br.readLine();
str2 = str +"server response ";
dout.writeUTF(str2);
dout.flush();
counter ++;
}
din.close();
}
}
公共类服务器连接扩展线程{
专用套接字客户端(usocket),;
公共服务器连接(套接字客户端\u套接字){
this.client\u socket=客户端\u socket;
}
公开募捐{
DataInputStream din=新的DataInputStream(client_socket.getInputStream());
DataOutputStream dout=新的DataOutputStream(client_socket.getOutputStream());
BufferedReader br=新的BufferedReader(新的InputStreamReader(System.in));
字符串str=“”,str2=“”;
int计数器=0;
而(!str.equals(“stop”)&计数器<10)
{
str=din.readUTF();
System.out.println(“客户说:“+str”);
//str2=br.readLine();
str2=str+“服务器响应”;
dout.writeUTF(str2);
dout.flush();
计数器++;
}
din.close();
}
}
您的MyServer错误。它只接受一个客户机
try (ServerSocket s = new ServerSocket(...);) {
while (true) {
Socket conn = s.accept();
conn.getInetAddress().getHostName() + " : " + conn.getPort());
new ServerConnection(conn).start();
}
}
catch(IOException e) {
e.printStackTrace();
}
}
对于每一位客户来说,都是这样的
public class ServerConnection extends Thread {
private Socket client_socket;
public ServerConnection( Socket client_socket) {
this.client_socket = client_socket;
}
public void run() {
DataInputStream din = new DataInputStream(client_socket.getInputStream());
DataOutputStream dout = new DataOutputStream(client_socket.getOutputStream());
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = "", str2 = "";
int counter = 0;
while (!str.equals("stop") && counter < 10)
{
str = din.readUTF();
System.out.println("client says: " + str);
//str2 = br.readLine();
str2 = str +"server response ";
dout.writeUTF(str2);
dout.flush();
counter ++;
}
din.close();
}
}
公共类服务器连接扩展线程{
专用套接字客户端(usocket),;
公共服务器连接(套接字客户端\u套接字){
this.client\u socket=客户端\u socket;
}
公开募捐{
DataInputStream din=新的DataInputStream(client_socket.getInputStream());
DataOutputStream dout=新的DataOutputStream(client_socket.getOutputStream());
BufferedReader br=新的BufferedReader(新的InputStreamReader(System.in));
字符串str=“”,str2=“”;
int计数器=0;
而(!str.equals(“stop”)&计数器<10)
{
str=din.readUTF();
System.out.println(“客户说:“+str”);
//str2=br.readLine();
str2=str+“服务器响应”;
dout.writeUTF(str2);
dout.flush();
计数器++;
}
din.close();
}
}
亲爱的投票人,至少给出一个为什么投票的建议。亲爱的投票人,至少给出一个为什么投票的建议。
try (ServerSocket s = new ServerSocket(...);) {
while (true) {
Socket conn = s.accept();
conn.getInetAddress().getHostName() + " : " + conn.getPort());
new ServerConnection(conn).start();
}
}
catch(IOException e) {
e.printStackTrace();
}
}
public class ServerConnection extends Thread {
private Socket client_socket;
public ServerConnection( Socket client_socket) {
this.client_socket = client_socket;
}
public void run() {
DataInputStream din = new DataInputStream(client_socket.getInputStream());
DataOutputStream dout = new DataOutputStream(client_socket.getOutputStream());
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = "", str2 = "";
int counter = 0;
while (!str.equals("stop") && counter < 10)
{
str = din.readUTF();
System.out.println("client says: " + str);
//str2 = br.readLine();
str2 = str +"server response ";
dout.writeUTF(str2);
dout.flush();
counter ++;
}
din.close();
}
}