在线等答案,急!

majielijun 2009-12-11 10:24:14
写了个网络编程的,但是一启动程序就失去响应,也不抱异常。希望大家帮忙解决。
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();
}
}
}
...全文
106 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
majielijun 2009-12-11
  • 打赏
  • 举报
回复
谢谢大家,有谁能给出点具体的改进么?
哦,我想也是这么回事,但我的请求连接跟服务器端在同一个工程内,所以当点了启动服务器时,整个程序都失去响应,客户端无法请求连接,请问怎样解决。
liujiesmart 2009-12-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 drykilllogic 的回复:]
貌似是这段代码
serverSocket=new ServerSocket(this.dfPort);
sock=serverSocket.accept();
accept()需要接受请求,而楼主运行后好像一直没有请求,所以程序一直在等待
[/Quote]正解
a2068879 2009-12-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 swandragon 的回复:]
没有客户端连接,一直阻塞

[/Quote]
正解
DryKillLogic 2009-12-11
  • 打赏
  • 举报
回复
貌似是这段代码
serverSocket=new ServerSocket(this.dfPort);
sock=serverSocket.accept();
accept()需要接受请求,而楼主运行后好像一直没有请求,所以程序一直在等待
swandragon 2009-12-11
  • 打赏
  • 举报
回复
没有客户端连接,一直阻塞
zfangla 2009-12-11
  • 打赏
  • 举报
回复
当然了, serverSocket.accept(); 这个方法是阻塞式的, 直到有客户端来请求连接, 它才回继续走下去... 所以建议把accept这段等待连接的代码放在一个单独线程中.
shinem 2009-12-11
  • 打赏
  • 举报
回复
将监听和客户端连接写到两个不同的线程中就可以了
zhuyouyong 2009-12-11
  • 打赏
  • 举报
回复
路过帮顶

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧