TCP传输
=Socket和ServerSocket
=建立客户端和服务器端
=建立连接后,通过Socket中的IO流进行数据的传输
=关闭Socket
=同样,客户端与服务器端是两个独立的应用程序
面向连接的一种开发,就是对方在才可以通讯,通过3次握手确定连接。
客户端代码:
public class TCPClient {
public static void main(String[] args) throws IOException {
/*
* TCP客户端的建立
* 思路:
* 1、建立tcp客户端服务
* 1.1因为是面向连接,必须有连接才可以通信
* 1.2在创建客户端时,必须明确目的地址和端口
* 2、一旦连接建立,就有了数据传输的同道,就可以在同道中进行数据的传输
* 这个传输其实就是通过流实现的,这个流就是SocketIO流
* 3、只要获取Socket IO中的写动作,就可以把数据写到socket流中发给服务端
* */
System.out.println("客户端启动");
//1、创建客户端对象,明确目的地和端口
Socket s = new Socket("192.168.1.253", 10003);
//2、获取socket流中的输出流,将数据发送给服务端
OutputStream out = s.getOutputStream();
//3、通过输出流写数据
out.write("又要注意了,TCP来了".getBytes()); //传输的是字节流
//4、关闭资源
s.close();
}
}
服务器端代码:
public class TCP_Server {
public static void main(String[] args) throws IOException{
/*
* 创建TCP服务器端
* 思路:
* 1、创建socket服务器端服务,服务器端为了让客户端可以连接上,
* 必须提供端口,监听一个端口。
* 2、获取客户端对象,通过客户端的socket流和对应的客户端进行通信
* 3、获取客户端的socket流的读取流
* 4、读取数据并显示在服务器端
* 5、关闭资源
* */
System.out.print("服务器端启动……");
//1、创建服务器端对象
ServerSocket ss = new ServerSocket(10003);
//2、获取客户端对象
Socket s = ss.accept();
String ip = s.getInetAddress().getHostAddress();
System.out.print(ip +"……连接起来");
//3、通过客户端对象获取socket流的读取流
InputStream in = (InputStream) s.getInputStream();
byte[] buf = new byte[1024];//建立缓冲区
int len = in.read(buf);
String str = new String(buf,0,len);
System.out.print(str);
s.close();
ss.close();
}
}