A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 樊占江 中级黑马   /  2012-8-17 02:54  /  1615 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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命令查看过,客户端开启的时候,端口没有被占用,处于监听模式,但是客户端就是无法发送数据给服务器

2 个回复

倒序浏览
可能是编译器的问题,去eclipse官网下最新版本的就好了
回复 使用道具 举报
本帖最后由 haiyualong 于 2012-8-17 09:32 编辑

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