java 多线程监听同一个端口_使用多线程在Java服务器中同时侦听两个端口

本文档描述了一个Java服务器程序,该程序使用两个ServerSocket实例在5000和3000端口上同时监听。每个端口对应一个独立的线程。然而,当尝试通过Client1和Client2连接到这两个端口时,客户端陷入阻塞状态,没有收到预期的欢迎消息。问题在于服务器可能没有正确地处理并响应客户端的连接请求。
摘要由CSDN通过智能技术生成

我正在构建一个简单的Java服务器,该服务器使用两个ServerSocket实例同时在两个端口上同时侦听客户端请求。这是服务器的代码:

import java.io.PrintWriter;

import java.io.OutputStream;

import java.net.ServerSocket;

import java.net.Socket;

class Socket1 implements Runnable

{

public void run()

{

try

{

ServerSocket serverSock=new ServerSocket(5000);

while(true)

{

Socket sock=serverSock.accept();

PrintWriter writer=new PrintWriter(sock.getOutputStream());

String text="Welcome to Port 5000";

writer.println(text);

}

}

catch(Exception e)

{

System.out.println("Error");

}

}

}

class Socket2 implements Runnable

{

public void run()

{

try

{

ServerSocket serverSock=new ServerSocket(3000);

while(true)

{

Socket sock=serverSock.accept();

PrintWriter writer=new PrintWriter(sock.getOutputStream());

String text="Welcome to Port 3000";

writer.println(text);

}

}

catch(Exception e)

{

System.out.println("Error");

}

}

}

public class Server

{

public static void main(String[] args)

{

Socket1 s1=new Socket1();

Socket2 s2=new Socket2();

Thread t1=new Thread(s1);

Thread t2=new Thread(s2);

t1.start();

t2.start();

}

}

现在为Client1编码:

import java.io.InputStreamReader;

import java.io.BufferedReader;

import java.net.Socket;

public class Client1

{

public static void main(String[] args)

{

try

{

Socket s=new Socket("127.0.0.1", 5000);

InputStreamReader streamReader=new InputStreamReader(s.getInputStream());

BufferedReader reader=new BufferedReader(streamReader);

String text=reader.readLine();

System.out.println(text);

reader.close();

}

catch(Exception e)

{

System.out.println("Error");

}

}

}

Client2包含与Client1相同的代码,唯一的区别是它尝试连接到端口3000。现在,我首先使用命令提示符执行Server.java。服务器阻塞时,我打开两个单独的命令提示符,并在一个命令提示符下执行Client1.java,在另一个命令提示符下执行Client2.java。但是,两个客户端都进入阻塞状态,但我没有任何输出。知道如何解决这个问题吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值