黑马程序员技术交流社区

标题: 代码题!跟网络工程有关 [打印本页]

作者: 樊占江    时间: 2012-8-17 02:54
标题: 代码题!跟网络工程有关
import java.io.*;
import java.net.*;
import java.util.*;
public class fuwuqi
{
public static void main(String[] args)
{
int count=0;
try
{
ServerSocket server=new ServerSocket(9876);
System.out.println("服务器对9876端口正在进行监听");
while(true)
{
Socket sc=server.accept();
DataInputStream din=new DataInputStream(sc.getInputStream());
DataOutputStream dout=new DataOutputStream(sc.getOutputStream());
System.out.println("欢迎你的访问");
dout.writeUTF("你好");
System.out.println(din.readUTF());
din.close();
dout.close();
sc.close();
}
}
catch(Exception e)
{
e.printStackTrace();
}
}

}

客户端
import java.io.*;
import java.net.*;
public class kehuduan
{
public static void main(String[] args)
{
try
{
Socket sc=new Socket("192.168.1.35",9876);
DataInputStream din=new DataInputStream(sc.getInputStream());
DataOutputStream dout=new DataOutputStream(sc.getOutputStream());
dout.writeUTF("你好");
System.out.println(din.readUTF());
din.close();
dout.close();
sc.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}

}

我用netstat命令查看过,客户端开启的时候,端口没有被占用,处于监听模式,但是客户端就是无法发送数据给服务器


作者: 王海亮    时间: 2012-8-17 03:16
可能是编译器的问题,去eclipse官网下最新版本的就好了
作者: 王海宇    时间: 2012-8-17 09:12
本帖最后由 haiyualong 于 2012-8-17 09:32 编辑

你的IP地址是你的电脑的地址吗?开始先用127.0.0.1测试比较好一点,测试通过再改用局域网地址。还有就是把你的输入流和输出流的创建调换一下位置试一下。某些输入输出流的创建必须是一一对应的,例如ObjectInputStream和ObjectOutputStream,如果一方(例如客户端)创建了输入流(ObjectInputStream),而另一方(例如服务器)没有创建对应的输出流(ObjectOutputStream),那创建输入流的这边将会被阻塞,直到对方创建输出流。原因就是输入流需要从输出流读取序列化头部并予以验证,而这个序列化的头部就是在输出流创建的时候发给输入流的。如果通信的两边都是先创建了输入流,那就会造成死锁了,两边都无法继续往下执行。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2