/*
演示tcp的传输,客户端和服务端的互访。
需求:客户端给服务端发送数据,服务端收到后,给客户端反馈信息。
*/
import java.io.*;
import java.net.*;
/*
客户端:
1.建立socket服务。指定要连接的主机和端口。
2.获取socket流中输出流。将数据写到该流中。通过网络发送给服务端。
3.获取socket流中输入流,将服务端反馈的数据获取到,并打印在控制台。
4.关闭客户端资源。
*/
class TcpClient2
{
public static void main(String[] args) throws Exception
{
Socket s = new Socket("192.168.1.100",10004);
OutputStream out = s.getOutputStream();
out.write("服务端你好!".getBytes());
InputStream in = s.getInputStream();
byte[] buf = new byte[1024];
int len = in.read(buf);//read阻塞式方法
System.out.println(new String(buf,0,len));
s.close();
}
}
class TcpServer2
{
public static void main(String[] args) throws Exception
{
ServerSocket ss = new ServerSocket(10004);
Socket s = ss.accept();//accept阻塞式方法
String ip = s.getInetAddress().getHostAddress();
System.out.println(ip+"...connected");
InputStream in = s.getInputStream();
byte[] buf = new byte[1024];
int len = in.read(buf);
System.out.println(new String(buf,0,len));
OutputStream out = s.getOutputStream();
Thread.sleep(5000);//为了演示客户端read方法为阻塞式
out.write("客户端你也好,我收到了".getBytes());
s.close();
ss.close();
}
}