TCP通信协议基本操作

mac2022-06-30  16

 * 创建服务器 * 1,指定端口,使用SeverSocket创建服务器 * 2,阻塞式等待连接accept() * 3,操作:输入输出操作 * 4,释放资源

1 package cn.ftf.tpc; 2 3 import java.io.DataInputStream; 4 import java.net.ServerSocket; 5 import java.net.Socket; 6 7 /** 8 * 创建服务器 9 * 1,指定端口,使用SeverSocket创建服务器 10 * 2,阻塞式等待连接accept() 11 * 3,获取流,IO操作 12 * 4,释放资源 13 * @author 房廷飞 14 * 15 */ 16 public class Sever { 17 public static void main(String[] args) throws Exception { 18 System.out.println("------Server------"); 19 //1,指定端口,使用SeverSocket创建服务duan 20 ServerSocket server = new ServerSocket(8555); 21 //* 2,阻塞式等待连接accept() 22 Socket client=server.accept(); 23 System.out.println("一个客户端创建了连接!"); 24 //* 3,操作:输入输出操作 25 DataInputStream dis=new DataInputStream(client.getInputStream()); 26 String data=dis.readUTF(); 27 System.out.println(data); 28 //4,关闭资源 29 dis.close(); 30 server.close(); 31 } 32 }

创建客户端 * 1,创建连接:使用Socket类创建客户端+服务的地址和端口 * 2,获取流,IO流操作 * 3,释放资源

1 package cn.ftf.tpc; 2 3 import java.io.DataOutputStream; 4 import java.io.IOException; 5 import java.net.Socket; 6 import java.net.UnknownHostException; 7 8 /** 9 * 熟悉流程,创建客户端 10 * 1,创建连接:使用Socket类创建客户端+服务的地址和端口 11 * 2,获取流,IO流操作 12 * 3,释放资源 13 * @author 房廷飞 14 * 15 */ 16 public class Client { 17 public static void main(String[] args) throws Exception, IOException { 18 System.out.println("------Client------"); 19 //1,创建连接:使用Socket类创建客户端+服务的地址和端口 20 Socket client=new Socket("localhost",8555); 21 //2,获取流,IO流操作 22 DataOutputStream dos=new DataOutputStream(client.getOutputStream()); 23 String data="hello world!"; 24 dos.writeUTF(data); 25 dos.writeUTF(" hello wordhelloword"); 26 dos.flush(); 27 //3,释放资源 28 dos.close(); 29 client.close(); 30 } 31 }

 

 

应用:模拟登陆,双向传信息

LoginServer.java

1 package cn.ftf.tpc; 2 3 import java.io.DataInputStream; 4 import java.io.DataOutputStream; 5 import java.net.ServerSocket; 6 import java.net.Socket; 7 8 /** 9 * 创建服务器 10 * 1,指定端口,使用SeverSocket创建服务器 11 * 2,阻塞式等待连接accept() 12 * 3,操作:输入输出操作 13 * 4,释放资源 14 * @author 房廷飞 15 * 16 */ 17 public class LoginSever { 18 public static void main(String[] args) throws Exception { 19 System.out.println("------Server------"); 20 String uname=null; 21 String upwd=null; 22 23 //1,指定端口,使用SeverSocket创建服务端 24 ServerSocket server = new ServerSocket(8555); 25 //* 2,阻塞式等待连接accept() 26 Socket client=server.accept(); 27 System.out.println("一个客户端创建了连接!"); 28 //* 3,操作:输入输出操作 29 DataInputStream dis=new DataInputStream(client.getInputStream()); 30 String data=dis.readUTF(); 31 //分析 32 String[] dataArray=data.split("&"); 33 for(String info:dataArray) { 34 String[] userInfo=info.split("="); 35 System.out.println(userInfo[0]+"-->"+userInfo[1]); 36 if(userInfo[0].equals("uname")) { 37 uname=userInfo[1]; 38 }else { 39 upwd=userInfo[1]; 40 41 } 42 43 } 44 if(uname.equals("房廷飞")&&upwd.equals("ftf111")) { 45 System.out.println("登陆成功!"); 46 DataOutputStream dos=new DataOutputStream(client.getOutputStream()); 47 dos.writeUTF("登陆成功!"); 48 dos.flush(); 49 //3,释放资源 50 dos.close(); 51 }else { 52 DataOutputStream dos=new DataOutputStream(client.getOutputStream()); 53 dos.writeUTF("登陆失败,用户名或密码错误!!"); 54 System.out.println("登陆失败!"); 55 dos.flush(); 56 dos.close(); 57 } 58 //4,关闭资源 59 dis.close(); 60 server.close(); 61 } 62 }

LoginClient.java

package cn.ftf.tpc; import java.io.BufferedReader; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.Socket; import java.net.UnknownHostException; import java.util.Scanner; /** * 1,创建连接:使用Socket类创建客户端+服务的地址和端口 * 2,获取流,IO流操作 * 3,释放资源 * @author 房廷飞 * */ public class LoginClient { public static void main(String[] args) throws Exception, IOException { System.out.println("------Client------"); BufferedReader console=new BufferedReader(new InputStreamReader(System.in)); String uname=console.readLine(); String upwd=console.readLine(); //1,创建连接:使用Socket类创建客户端+服务的地址和端口 Socket client=new Socket("localhost",8555); //2,获取流,IO流操作 DataOutputStream dos=new DataOutputStream(client.getOutputStream()); dos.writeUTF("uname="+uname+"&"+"upwd="+upwd); dos.flush(); DataInputStream dis=new DataInputStream(client.getInputStream()); String result=dis.readUTF(); System.out.println(result); //3,释放资源 dos.close(); client.close(); } }

应用:上传文件

FileServe.java

1 package cn.ftf.tpc; 2 3 import java.io.BufferedInputStream; 4 import java.io.BufferedOutputStream; 5 import java.io.DataInputStream; 6 import java.io.FileInputStream; 7 import java.io.FileOutputStream; 8 import java.io.InputStream; 9 import java.io.OutputStream; 10 import java.net.ServerSocket; 11 import java.net.Socket; 12 13 /** 14 * 1,指定端口,使用SeverSocket创建服务器 15 * 2,阻塞式等待连接accept() 16 * 3,操作:输入输出操作 17 * 4,释放资源 18 * @author 房廷飞 19 * 20 */ 21 public class FileSever { 22 public static void main(String[] args) throws Exception { 23 System.out.println("------Server------"); 24 //1,指定端口,使用SeverSocket创建服务duan 25 ServerSocket server = new ServerSocket(2555); 26 //* 2,阻塞式等待连接accept() 27 Socket client=server.accept(); 28 System.out.println("一个客户端创建了连接!"); 29 //* 3,操作:输入输出操作 30 InputStream in=new BufferedInputStream(client.getInputStream()); 31 OutputStream out = new BufferedOutputStream(new FileOutputStream("C:\\Users\\user\\Desktop\\盲打拷贝.png")); 32 byte[] data=new byte[1024]; 33 int len=-1; 34 while((len=in.read(data))!=-1) { 35 out.write(data,0,len); 36 out.flush(); 37 } 38 //4,关闭资源 39 System.out.println("copy成功!"); 40 41 out.close(); 42 in.close(); 43 server.close(); 44 } 45 }

FileClient.java

1 package cn.ftf.tpc; 2 3 import java.io.BufferedInputStream; 4 import java.io.BufferedOutputStream; 5 import java.io.DataOutputStream; 6 import java.io.FileInputStream; 7 import java.io.IOException; 8 import java.io.InputStream; 9 import java.io.OutputStream; 10 import java.net.Socket; 11 import java.net.UnknownHostException; 12 13 /** 14 * 1,创建连接:使用Socket类创建客户端+服务的地址和端口 15 * 2,获取流,IO流操作 16 * 3,释放资源 17 * @author 房廷飞 18 * 19 */ 20 public class FileClient { 21 public static void main(String[] args) throws Exception, IOException { 22 System.out.println("------Client------"); 23 //1,创建连接:使用Socket类创建客户端+服务的地址和端口 24 Socket client=new Socket("localhost",2555); 25 //2,获取流,IO流操作 26 InputStream in=new BufferedInputStream(new FileInputStream("D:\\myjavacode\\JavaPractise01\\src\\cn\\ftf\\io\\盲打指示.jpg")); 27 OutputStream out = new BufferedOutputStream(client.getOutputStream()); 28 byte[] data=new byte[1024]; 29 int len=-1; 30 while((len=in.read(data))!=-1) { 31 out.write(data,0,len); 32 out.flush(); 33 } 34 //3,释放资源 35 out.close(); 36 in.close(); 37 client.close(); 38 } 39 }

 

转载于:https://www.cnblogs.com/fangtingfei/p/11265480.html

最新回复(0)