TCP通信协议基本操作

 * 创建服务器
 * 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 }

 

posted @ 2019-07-29 17:55  codeFlyer  阅读(395)  评论(0编辑  收藏  举报