esp*_*upt 18 java sockets port relationship
我是Java中Socket编程的新手,并试图理解下面的代码是不是错误的做法.我的问题是:
我可以在每个线程上尝试连接到同一程序中的服务器实例的多个客户端,并期望服务器在客户端之间隔离地读取和写入数据"
public class Client extends Thread
{
...
void run()
{
Socket socket = new Socket("localhost", 1234);
doIO(socket);
}
}
public class Server extends Thread
{
...
void run()
{
// serverSocket on "localhost", 1234
Socket clientSock = serverSocket.accept();
executor.execute(new ClientWorker(clientSock));
}
}
Run Code Online (Sandbox Code Playgroud)
现在我可以在不同的线程上尝试连接当前机器的同一端口上的多个客户端实例吗?
例如,
Server s = new Server("localhost", 1234);
s.start();
Client[] c = new Client[10];
for (int i = 0; i < c.length; ++i)
{
c.start();
}
Run Code Online (Sandbox Code Playgroud)
pat*_*ros 10
是的,但是只有一个客户端能够按写入的每个线程执行连接.
您可以将服务器run()放在while循环中,让多个客户端连接起来.根据执行程序,它们将以串行或并行方式执行.
public class Server extends Thread
{
...
void run()
{
while(true){
// serverSocket on "localhost", 1234
Socket clientSock = serverSocket.accept();
executor.execute(new ClientWorker(clientSock));
}
}
}
Run Code Online (Sandbox Code Playgroud)
只要只有一个对象尝试绑定端口进行侦听,那么多个客户端连接就没有问题。
| 归档时间: |
|
| 查看次数: |
41330 次 |
| 最近记录: |