首页 > 代码库 > JAVA学习第六十一课 — TCP协议
JAVA学习第六十一课 — TCP协议
TCP传输
Socket和ServerSocket
建立客户端和服务器端(两个独立的应用程序)
建立连接后,通过Socket中的IO流进行数据的传输
关闭Socket
TCP和UDP原理差不多,只是涉及的对象不一样
TCP客户端
| Socket(String host, int port) 创建一个流套接字并将其连接到指定主机上的指定端口号。 |
public static void TCPDemo() throws UnknownHostException, IOException { /* * TCP传输,客户端建立 * 1.建立TCP客户端socket服务,使用SOCKET对象(建议一创建就明确目的地,要连接的主机) * 2.如果连接建立成功,就说明数据传输通道已建立 * 该通道就是SOCKET流,是底层建立好的,因为是流,所以有输入输出,其输入输出流对象,在SOCKET获取 * 通过getInputStream()和getOutputStream()来获取两个字节流 * 3.使用输出流,将数据写出(网络) * 4.关闭 */ //建立客户端SOCKET服务 Socket socket = new Socket("127.0.0.1",6534);//地址和端口号 //获取SOCKET流中的输出流 OutputStream os = socket.getOutputStream(); //使用输出流将指定的数据写出 os.write("tcp客户端发送信息".getBytes()); socket.close(); }
TCP服务端
public static void TEPserveDeno() throws IOException { //服务端接收客户端发来的数据,并打印在控制台 /* * 建立TCP服务端 * 1.建立TCP服务端Socket服务,通过ServerSocket对象 * 2.服务端必须对外提供端口,否则客户端无法连接 * 3.获取连接过来的客户端对象(重点) * (比如拨打10086人工,一个客户,一个服务人员,客户的数据,客户自己最清楚) * 4.通过客户端对象获取Socket流兑取客户端发来的数据并打印 * 5.关闭资源:关闭客户端,关闭服务端 */ //常见服务端对象 ServerSocket ss = new ServerSocket(6534); //获取连接过来的客户端对象 Socket so = ss.accept();//此方法用来获取客户端对象 String ip = so.getInetAddress().getHostAddress(); //通过Socket对象获取输入流,读取客户端发来的数据 InputStream in = so.getInputStream(); byte[] buf = new byte[1024]; int len = in.read(buf); String str = new String(buf,0,len); System.out.println("ip : "+ip+"server : "+str); so.close();//服务端一般是不关闭的 }
注意:TCP和UDP不一样的是,必须先开启服务端,服务端不打开,客户端就无法访问,而UDP随意
服务端和客户端交互
客户端发送数据过去,服务端返回信息,表示收到
import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; import java.net.UnknownHostException; public class Main { public static void main(String[] args) throws IOException{ TCPDemo(); TCPserveDeno(); } public static void TCPserveDeno() throws IOException { ServerSocket ss = new ServerSocket(6534); Socket so = ss.accept();//阻塞式的 String ip = so.getInetAddress().getHostAddress(); InputStream in = so.getInputStream(); byte[] buf = new byte[1024]; int len = in.read(buf); String str = new String(buf,0,len); System.out.println("ip : "+ip+"server : "+str); //使用客户端Socket对象输出流返回数据 OutputStream out = so.getOutputStream(); out.write("收到信息".getBytes()); so.close(); } public static void TCPDemo() throws UnknownHostException, IOException { Socket socket = new Socket("127.0.0.1",6534); OutputStream os = socket.getOutputStream(); os.write("tcp客户端发送信息".getBytes()); //读取服务端返回的数据,使用Socket读取流 InputStream in = socket.getInputStream(); byte[] buf = new byte[1024]; int len = in.read(buf); String text = new String(buf,0,len); System.out.println(text); socket.close(); } }
JAVA学习第六十一课 — TCP协议
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。