/*
演示tcp传输。
1,tcp分客户端和服务端。
2,客户端对应的对象是Socket。
服务端对应的对象是ServerSocket。
*/
/*
客户端,
通过查阅socket对象,发现在该对象建立时,就可以去连接指定主机。
因为tcp是面向连接的。所以在建立socket服务时,
就要有服务端存在,并连接成功。形成通路后,在该通道进行数据的传输。
需求:给服务端发送给一个文本数据。
步骤:
1,创建Socket服务。并指定要连接的主机和端口。
*/
import java.io.*;
import java.net.*;
class TcpClient
{
public static void main(String[] args) throws Exception
{
//建立客户端连接并指定端口;
Socket s=new Socket("192.168.1.100",1003);
//获取Socket对象中的输出流,并向服务端传输数据;
OutputStream out=s.getOutputStream();
out.write("deng jie ni hao ".getBytes());
//关闭客户端;因为输出流被封装在客户端中,所以只要关闭了客户;输出流也就自动关闭了;
s.close();
}
}
/*
需求:接收客户端数据并打印在控制台上;
*/
class TcpServer
{
public static void main(String[] args) throws Exception
{
//建立服务端并监听一个端口;
ServerSocket ss=new ServerSocket(1003);
//通过accept获取连接过来的客户端的对象;并使用其方法;
Socket s= ss.accept();
//获取客户端的IP地址;
String ip=s.getInetAddress().getHostAddress();
System.out.println("ip="+ip+"....connected......");
//获取客户端的读取流,并用读取流读取传过来的数据;
InputStream in=s.getInputStream();
byte[] buf=new byte[1024];
int len=0;
while ((len=in.read(buf))!=-1)
{
System.out.println(new String(buf,0,len));
}
//s.close();
//ss.close();//自己写代码的时候忘记了写这两句话;在我的客户端发送完数据后怎么我的服务端还是关闭了。它是怎么做到的;
//毕老师说服务端一般不用关闭的;怎么才能让他一直开着;
}}
|