私はJavaソケットプログラミングに従おうとしています。 私の目標は、複数のクライアントスレッドを作成し、それらのスレッドは状態 をポストし、それらはすべて同じサーバーによってリスンされます。この 1.サーバーの開始 2.クライアントAのようなJavaソケットプログラミングで単一のサーバーで複数のクライアントを作成する方法
何かが 3.クライアントBが 4.クライアントAが 5.クライアントBは、クライアント 6に "こんにちは" と述べクライアントBに "こんにちは" と述べ始めた開始しましたクライアントAがHi2をクライアントBに接続 7.クライアントBがクライアントAに "Hi2"を言った 8.クライアントAがクライアントBに "Hi3"を言った 9.クライアントBがクライアントAに "Hi3"を言った10.クライアントA完了 11.クライアントBが完了しました
これまでに試したことは次のとおりです。 1. MyServe r.java
import java.net.*;
import java.io.*;
class MyServer
{
public static void main(String args[]) throws Exception
{
ServerSocket server_socket = new ServerSocket(3333);
Socket client_socket = server_socket.accept();
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();
client_socket.close();
server_socket.close();
}
}
インポートjava.util.stream.IntStream
-
。
App.java
パブリッククラスアプリ {
public static void main(String[] args) { new Thread(new ClientThread("A")).start(); //new Thread(new ClientThread("B")).start(); /*try { DataInputStream dataInputStream; DataOutputStream dataOutputStream; BufferedReader bufferedReader; Socket socket = new Socket("localhost", 12345); dataInputStream = new DataInputStream(socket.getInputStream()); dataOutputStream = new DataOutputStream(socket.getOutputStream()); bufferedReader = new BufferedReader(new InputStreamReader(System.in)); Player p1 = new Player("p1", dataInputStream, dataOutputStream, bufferedReader); Player p2 = new Player("p2", dataInputStream, dataOutputStream, bufferedReader); p1.move(); p2.move(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }*/ }
}
public class ClientThreadはRunnableを実装します { String client_name;
public ClientThread(String client_name)
{
this.setClient_name(client_name);
}
public void run()
{
for(int i=0;i<5;i++)
{
System.out.println(this.getClient_name()+" : "+i);
new ClientHelper().sendMessageToServer(this.getClient_name(),i);
try
{
Thread.sleep(1000);
} catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public String getClient_name()
{
return client_name;
}
private void setClient_name(String client_name)
{
this.client_name = client_name;
}
}
3。 ClientHelper.java
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;
public class ClientHelper
{
Socket socket;
DataInputStream din ;
DataOutputStream dout ;
public void sendMessageToServer(String player_name, int i)
{
try
{
socket = new Socket("localhost", 3333);
din = new DataInputStream(this.getSocket().getInputStream());
dout = new DataOutputStream(this.getSocket().getOutputStream());
// BufferedReader br = new BufferedReader(new
// InputStreamReader(System.in));
dout.writeUTF(player_name + " : says hi :" + i);
dout.flush();
socket.close();
} catch (UnknownHostException e)
{
e.printStackTrace();
} catch (IOException e)
{
e.printStackTrace();
} finally
{
}
}
private Socket getSocket()
{
return socket;
}
private void setSocket(Socket socket)
{
this.socket = socket;
}
}
これは、1つを接続しますクライアントは接続しませんが、2番目のクライアントは接続しません。
親愛downvoterなどの各クライアント何かのために、少なくとも提案理由downvotingをドロップします。 – user1379280