黑马程序员技术交流社区

标题: tcp传输客户端和服务端连接的问题 [打印本页]

作者: 张华廷    时间: 2012-6-23 15:28
标题: tcp传输客户端和服务端连接的问题
本帖最后由 张华廷 于 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)
作者: 闾丘日月    时间: 2012-6-23 15:45
ip,,,,127.0.0.1
tcp哥们来了
这段代码可以正确执行,当然问题是有很多,如果你只是在刚学习socket的话,这么写无所谓
现在你的异常是连接被拒绝,那么你要考虑192.168.1.254这台机器的设置了,如果是你本机测试的话,用127.0.0.1试试?
作者: 孙峰    时间: 2012-6-23 15:46
哥们你程序写的完全没错啊,  是这样的,你在运行TcpClient  前 要 start 一个新的窗口,先运行服务器之后,你客户端才能找到服务器啊,还有你那IP地址要写自己的IP,对不对?
作者: 张华廷    时间: 2012-6-23 16:19
闾丘日月 发表于 2012-6-23 15:45
ip,,,,127.0.0.1
tcp哥们来了
这段代码可以正确执行,当然问题是有很多,如果你只是在刚学习socket的话,这 ...

谢了,ip地址的问题




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