我对java的socket编程很新。我开发了一个简单的客户端服务器程序,它涉及actionListener。一旦点击加入按钮,就无法建立连接,我的客户端程序没有对我做任何响应。当我首先运行我的服务器程序时,服务器程序在程序中响应一些初始消息以指示服务器正在启动,但是当我运行我的客户端程序并尝试连接到服务器时,它将不会响应任何内容。此外,该程序正在我的PC中使用两个CMD进行测试
我尝试了一些方法,如flush(),close(),它也没有工作
Simple client server program not working
这是我的问题参考来源之一
这是我的客户计划的一部分
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==btn1)
{
try
{
Socket s = new Socket("127.0.0.1",8888); //initialize the socket in client
DataInputStream input = new DataInputStream(s.getInputStream()); // receive message from server
DataOutputStream output = new DataOutputStream(s.getOutputStream()); // send the message to server
String word = input.readUTF(); // read the input from server
JOptionPane.showMessageDialog(null,word); // display the message
output.flush();
output.close();
btn2.setVisible(true);
btn3.setVisible(true);
btn4.setVisible(true);
}
catch(IOException exp)
{
JOptionPane.showMessageDialog(null,"Client : Can't Connect To Server, Please Try Again");
}
}
这是我的服务器程序
http://codepad.org/AlUr9Qi1
答案 0 :(得分:1)
我觉得问题出在你的服务器代码中。您的服务器循环接受:
while(true)
{
socket = server.accept();
}
所以你接受套接字而不做任何其他事情,并且永远不会到达处理套接字流的代码。您需要从该循环内的套接字读取/写入,可能跨越一个线程来处理套接字,同时继续等待另一个客户端。