写了个网络编程的,但是一启动程序就失去响应,也不抱异常。希望大家帮忙解决。
package df;
import java.net.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
public class df extends JFrame implements ActionListener
{
JPanel pSaler;
JPanel pBuyer;
JLabel lbBuyer,lbSaler;
JTextField txtSaler;
JList lstBuyer;
JScrollPane jsp;
JButton btnStart;
ServerSocket serverSocket;
Socket sock;
int dfPort;
DataOutputStream out;
DataInputStream in;
public df(int port)
{
this.dfPort=port;
createUI();
}
public void startServer() 
{
try
{
serverSocket=new ServerSocket(this.dfPort);
[color=#0000FF]sock=serverSocket.accept();//经调试,发现程序一直停在此处
out=new DataOutputStream(sock.getOutputStream());
in=new DataInputStream(sock.getInputStream());
out.writeUTF("连接服务器成功");
dfCommunions th=new dfCommunions(this);
th.start();
}
catch(IOException e)
{
JOptionPane.showMessageDialog(null, "服务器启动失败");
return ;
}[/color] }
public void createUI()
{
this.setLayout(new BorderLayout());
pBuyer=new JPanel();
pSaler=new JPanel();
lbSaler=new JLabel("卖家");
lbBuyer=new JLabel("买家");
txtSaler=new JTextField(20);
lstBuyer=new JList();
btnStart=new JButton("启动服务器");
btnStart.addActionListener(this);
jsp=new JScrollPane(lstBuyer);

pSaler.add(lbSaler);
pSaler.add(txtSaler);
pBuyer.add(lbBuyer);
pBuyer.add(jsp);

this.add(pSaler,"North");
this.add(pBuyer,"Center");
this.add(btnStart,"South");
this.setSize(400,200);
this.setVisible(true);
}
public void actionPerformed(ActionEvent e) 
{
if(e.getSource()==btnStart)
{
startServer();
}
}
}

解决方案 »

  1.   

    当然了, serverSocket.accept(); 这个方法是阻塞式的, 直到有客户端来请求连接, 它才回继续走下去... 所以建议把accept这段等待连接的代码放在一个单独线程中.
      

  2.   

    貌似是这段代码
    serverSocket=new ServerSocket(this.dfPort); 
    sock=serverSocket.accept();
    accept()需要接受请求,而楼主运行后好像一直没有请求,所以程序一直在等待