本帖最后由 张华廷 于 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) |
|