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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张华廷 中级黑马   /  2012-6-23 15:28  /  1778 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张华廷 于 2012-6-23 16:19 编辑

/*
客户端
通过查阅socket对象,发现在该对象建立时,就可以去连接指定的主机
以为tcp时面向连接的,所以建立socket服务时,就要有服务端存在,并连接成功,形成通路后
在该通道进行数据的传输

1. 创建Socket服务,并指定要连接的主机和端口


*/

import java.io.*;
import java.net.*;

class TcpClient
{
                public static void main(String[] args)throws Exception
                {
                        //创建客户端的Scoket服务,指定主机和端口
                        Socket s = new Socket("192.168.1.254",10003);
                        
                         //为了发送数据,应该获取socket流中的输出流
                        OutputStream out =s.getOutputStream();
                        
                        out.write("tcp哥们来了".getBytes());
                        
                        s.close();
                }

}


/*
定义端点接受数据并打印在控制台上
服务端
1.建立socket服务,serversocket()
2.获取连接客户端对象
   通过ServerSocket的Accept方法没有连接就等,所以这个方法阻塞式的‘
3.获取客户端对象读取发过来的数据
4.关闭服务端

*/
class TcpServer
{
                public static void main(String[] args)throws Exception
                {
                        //建立服务端Socket服务, 并监听一个端口
                        ServerSocket ss = new ServerSocket(10003);
                        
                        //通过accept方法获取连接过来的=客户端对象
                        Socket s = ss.accept();
                        
                        //获取IP地址
                        String ip = s.getInetAddress().getHostAddress();
                        
                        System.out.println("ip,,,,"+ip);
                        
                        //获取客户端发送过来的数据,客户端对象读取流读取数据
                        InputStream in = s.getInputStream();
                        
                        byte[] buf = new byte[1024];
                        
                        int len =in.read(buf);
                        
                        System.out.println(new String(buf ,0,len));
                        
                        s.close();
                        
                        ss.close();
                        
                        
                }
        
}

在Tcp传输,能够启动服务端,但是在启动客户端进行连接时,出现异常
d:\Users\Administrator\Desktop\lianxi>java TcpClient
Exception in thread "main" java.net.ConnectException: Connection refused: connec
t
        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(TcpDemo1.java:20)

3 个回复

倒序浏览
ip,,,,127.0.0.1
tcp哥们来了
这段代码可以正确执行,当然问题是有很多,如果你只是在刚学习socket的话,这么写无所谓
现在你的异常是连接被拒绝,那么你要考虑192.168.1.254这台机器的设置了,如果是你本机测试的话,用127.0.0.1试试?

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
哥们你程序写的完全没错啊,  是这样的,你在运行TcpClient  前 要 start 一个新的窗口,先运行服务器之后,你客户端才能找到服务器啊,还有你那IP地址要写自己的IP,对不对?

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 你懂的!

查看全部评分

回复 使用道具 举报
闾丘日月 发表于 2012-6-23 15:45
ip,,,,127.0.0.1
tcp哥们来了
这段代码可以正确执行,当然问题是有很多,如果你只是在刚学习socket的话,这 ...

谢了,ip地址的问题
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马