黑马程序员技术交流社区

标题: 网络编程异常问题 [打印本页]

作者: 杨丽静    时间: 2013-12-31 19:29
标题: 网络编程异常问题
import java.net.*;
import java.io.*;


class TcpClient
{
        public static void main(String[] args) throws Exception
        {
               
                //创建客户端的Socket服务,指定目的主机和端口
                Socket s = new Socket("196.168.1.103",10004);
                //为了发送数据,应该获取socket流中的输出流
                OutputStream os = s.getOutputStream();
                os.write("tcp 来了".getBytes());
                System.out.print(s.getInetAddress()+"...connected");
                s.close();
        }
}
class TcpServer
{
        public static void main(String[] args) throws Exception
        {
                ServerSocket ss = new ServerSocket(10004);
                //通过accept方法获取链接过来的客户端对象
                Socket s = ss.accept();
                //获取客户端的IP地址
                String ip = s.getInetAddress().getHostAddress();
                System.out.print(ip+"...connected");
                //获取客户端发送过来的数据就要使用客户端对象的读取流来读取数据。
                InputStream is = s.getInputStream();
               
                byte[] buf = new byte[1024];
                int len = is.read(buf);
               
                String data = new String(buf,0,len);
                System.out.println(data);
        }
}
这是我看毕老师的视频写的代码可是 出现了下面的异常请大神讲解一下

Exception in thread "main" java.net.ConnectException: Connection timed out: connect        at java.net.PlainSocketImpl.socketConnect(Native Method)        at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)        at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)        at java.net.Socket.connect(Socket.java:519)        at java.net.Socket.connect(Socket.java:469)        at java.net.Socket.<init>(Socket.java:366)        at java.net.Socket.<init>(Socket.java:180)        at TcpClient.main(TcpDemo.java:23)



11.PNG (36.31 KB, 下载次数: 17)

11.PNG

作者: 天天学习    时间: 2013-12-31 19:56
import java.net.*;
import java.io.*;

class TcpClient
{
         public static void main(String[] args) throws Exception
         {
                 
                 //创建客户端的Socket服务,指定目的主机和端口
                Socket s = new Socket("127.0.0.1",10004);
                 //为了发送数据,应该获取socket流中的输出流
                OutputStream os = s.getOutputStream();
                 os.write("tcp 来了".getBytes());
                 System.out.print(s.getInetAddress()+"...connected");
                 s.close();
         }
}
class TcpServer
{
         public static void main(String[] args) throws Exception
         {
                 ServerSocket ss = new ServerSocket(10004);
                 //通过accept方法获取链接过来的客户端对象
                Socket s = ss.accept();
                 //获取客户端的IP地址
                String ip = s.getInetAddress().getHostAddress();
                 System.out.print(ip+"...connected");
                 //获取客户端发送过来的数据就要使用客户端对象的读取流来读取数据。
                InputStream is = s.getInputStream();
                 
                 byte[] buf = new byte[1024];
                 int len = is.read(buf);
                 
                 String data = new String(buf,0,len);
                 System.out.println(data);
         }
}
class MyTest
{
}
我将ip地址改成本地循环地址127.0.0.1然后运行没问题,是不是你那ip有问题,你在查查ip是不是有问题
1、javac  MyTest.java
2、java  TcpServer
3、java  TcpClient



作者: 杨丽静    时间: 2013-12-31 21:33
还是不行 啊     我用的Myeclipse写的代码用应该不是这个问题吧
作者: 天天学习    时间: 2014-1-1 09:53
本帖最后由 天天学习 于 2014-1-1 09:54 编辑
杨丽静 发表于 2013-12-31 21:33
还是不行 啊     我用的Myeclipse写的代码用应该不是这个问题吧

我知道了,tcp是通过建立连接进行数据传送的,它通过三次握手完成连接,必须建立连接后才能进行数据传递,因此必须先开启服务端,在开启客户端,你是先开启了客户端,因而不能与服务端建立连接,报了连接超时等异常,你先开启服务端,在开启客户端试一下。
1,java TcpServer
2,java TcpClient





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