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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王小刚 中级黑马   /  2012-4-25 13:08  /  1451 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

//TCP客户端
import java.net.*;
import java.io.*;
class TCPclient
{
        public static void main(String[] args)
        {
                try
                {
                        Socket s = new Socket("192.168.1.101",10005);
                        BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
                        BufferedWriter bufOut = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
                        BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));
                        String line = null;
                        while ((line=bufr.readLine())!=null)
                        {
                                if ("over".equals(line))
                                        break;
                                bufOut.write(line);
                                bufOut.newLine();
                                bufOut.flush();
                                String str = bufIn.readLine();
                                System.out.println(str);
                        }
                        bufr.close();
                        s.close();
                               
                }
                catch (Exception e)
                {
                        System.out.println("over");
                }
        }
}
为什么运行结果是 over ?
而不是等待键盘录入的呢 , 找了很久,就是没找到问题所在。

3 个回复

倒序浏览
TCP协议是面向连接的,你服务端(ServerSocket)没有开,先执行客户端它连不到服务,就要有连接超时异常,然后就报"over"了
你应该先开服务端!!!
回复 使用道具 举报
你用的是TCP 的客户端
这个程序首先会进行三次握手也就是  去查看有没有这个服务器打开着
你的程序寻找不到属于  IP地址为192.168.1.101",端口号:10005的服务器 他当然报错啦
回复 使用道具 举报
谢谢,原来是这个原因呀,我查代码查了好久就是没找到错误...
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马