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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨丽静 中级黑马   /  2013-12-31 19:29  /  1451 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 赞一个!新年快乐同学~

查看全部评分

3 个回复

倒序浏览
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


评分

参与人数 1技术分 +1 收起 理由
FFF + 1 新年快乐同学~

查看全部评分

回复 使用道具 举报
还是不行 啊     我用的Myeclipse写的代码用应该不是这个问题吧
回复 使用道具 举报
本帖最后由 天天学习 于 2014-1-1 09:54 编辑
杨丽静 发表于 2013-12-31 21:33
还是不行 啊     我用的Myeclipse写的代码用应该不是这个问题吧

我知道了,tcp是通过建立连接进行数据传送的,它通过三次握手完成连接,必须建立连接后才能进行数据传递,因此必须先开启服务端,在开启客户端,你是先开启了客户端,因而不能与服务端建立连接,报了连接超时等异常,你先开启服务端,在开启客户端试一下。
1,java TcpServer
2,java TcpClient
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马