TCP通信协议基本操作
生活随笔
收集整理的這篇文章主要介紹了
TCP通信协议基本操作
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?* 創建服務器
?* 1,指定端口,使用SeverSocket創建服務器
?* 2,阻塞式等待連接accept()
?* 3,操作:輸入輸出操作
?* 4,釋放資源
創建客戶端
?* 1,創建連接:使用Socket類創建客戶端+服務的地址和端口
?* 2,獲取流,IO流操作
?* 3,釋放資源
?
?
應用:模擬登陸,雙向傳信息
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
總結
以上是生活随笔為你收集整理的TCP通信协议基本操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【XJTUSE计算机图形学】第四章 真实
- 下一篇: 云存储——fileserve