毕向东tcp学习笔记1

时间:2022-08-23 05:05:54

项目功能:

实现一次发送和接收,服务器接收客户端发送的内容并打印出来

毕向东tcp学习笔记1

用最通俗的语言讲解下,上图中大椭圆是服务器,A、C是客户端,当客户端和服务器通过socket建立连接后

1.两者之间形成一个通道,此时将要发送的内容放入流中:out.wirte(“字节数组")

2.服务器端使用客户端的对象得到socket s,s包括客户端的IP,端口,内容等属性

3.in来获取s中的内容,也就是客户端的out和服务器端的in一一对应

4.最后服务器将(根据客户端生成的)s关闭。只有服务器的套接字ss可选择性关闭

代码:

 /*
* 客户端:
* 通过查阅socket对象,发现TCP是面向连接的,所有对象建立时,就连接指定主机
* 服务端存在并连接成功,形成通路后,再该通道进行数据传输 步骤:
1.创建socket服务,指定目的主机和端口
*/
import java.io.*;
import java.net.*; class tcpClient
{
public static void main(String[] args) throws IOException{
//1.创建socket服务,指定目的主机和端口
Socket s =new Socket("192.168.1.103",10000); //为了发送数据,应获取socket流的输出流
OutputStream out = s.getOutputStream(); //将内容放到流中
out.write("tcp 我是客户端".getBytes()); s.close();
}
} /*
需求:定义端点接收数据并打印在控制台 服务端:
1.创建服务端serversocket对象并指定端口
当不指定时,使用connect方法指定
2. 获取连接过来的客户端对象
通过serversocket的accept方法等待,阻塞式,无连接一直等待
3.客户端如果发过来数据,服务端使用对应连接的读取流获取发过来数据
打印在服务台
4,关闭服务端(可选)
*/ class tcpServer
{
public static void main(String[] args) throws IOException{ //建立服务端socket服务,并监听端口
ServerSocket ss =new ServerSocket(10000); //通过accept方法获取链接过来的客户端对象(s中有内容,端口,IP属性)
Socket s = ss.accept();
//IP:
String ip =s.getInetAddress().getHostAddress();
System.out.println(ip+"...连接成功" );
//内容:获取客户端发送过来的数据,那么要使用客户端对象s
InputStream in = s.getInputStream(); byte[] buf =new byte[1024];
int len=in.read(buf);
String content = new String(buf,0,len);
System.out.println("内容:"+content ); s.close();//关闭客户端,服务器可以控制客户
ss.close();//关闭服务端,可选操作
}
}