Java网络编程:Socket 通信

2021-04-10 02:29

阅读:1135

标签:输出流   网络编程   sock   etc   管道   png   services   try   pac   

client----发送数据(输出流)------------(输入)-【管道流处理数据】-(输出)------接收数据(输入流)------server

URL:协议+IP+端口+资源位置

客户端:

  1. InetAddress 获取本地IP:写入服务器的端口号:xxxx
  2. 创建一个Socket连接(丢入IP和端口)
  3. 发送消息IO流(socket.getOutputStream();)
  4.     关闭

服务器:

  1. 服务端的建立一个端口:ServerSocket
  2. 监听客户端发过来的信息:serverSocket.accept();
  3. 读取客户端的信息(信息对于服务器管道是写入-就是输入流):accept.getInputStream();
  4. 管道流获取数据处理
  5.    关闭

 

客户端:代码实现

 

 1 package Demo1.JavaSe.javasocket;
 2 
 3 import java.io.IOException;
 4 import java.io.OutputStream;
 5 import java.net.InetAddress;
 6 import java.net.Socket;
 7 import java.net.UnknownHostException;
 8 
 9 //Socket编程客户端
10 public class JavaSocketClientG {
11     public static void main(String[] args) throws IOException {
12         Socket socket = null;
13         InetAddress ServerIP=null;
14         OutputStream outputStream=null;
15         try {
16             //1.要知道服务器端口号
17             ServerIP = InetAddress.getByName("127.0.0.1");
18             //端口号
19             int port = 9999;
20             //2.创建一个Socket连接
21             socket = new Socket(ServerIP, port);
22             //3.发送消息IO流
23             //client----发送数据(输出流)------------(输入)-【管道流处理数据】-(输出)------接收数据(输入流)------server
24             outputStream = socket.getOutputStream();
25             outputStream.write("你好,我发送信息过来了!!!".getBytes());
26 
27 
28         } catch (UnknownHostException e) {
29             e.printStackTrace();
30         } catch (IOException e) {
31             e.printStackTrace();
32         }finally {
33 
34             if (outputStream != null) {
35                 outputStream.close();
36             }
37             if (socket != null) {
38                 socket.close();
39             }
40         }
41 
42 
43     }
44 }

 服务器:代码实现

package Demo1.JavaSe.javasocket;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

//Socket编程服务端
public class JavaServiceSocketG {
    //Ctrl+Alt+L  格式化代码

    public static void main(String[] args) {
        //alt +enter  补全/提示
       // Ctrl+Alt+O 优化导入的类和包
        //ctrl+alt+t 选中,自动选择try-catch
        ServerSocket serverSocket=null;
        Socket accept=null;
        InputStream inputStream=null;
        ByteArrayOutputStream byteArrayOutputStream=null;
        try {
        //client----发送数据(输出流)------------(输入)-【管道流处理数据】-(输出)------接收数据(输入流)------server
            //1.服务端的有一个端口
            serverSocket= new ServerSocket(9999);
            //2.监听客户端发过来的信息
            accept= serverSocket.accept();
            //3.读取客户端的信息(信息对于服务器管道是写入-就是输入流)
            inputStream= accept.getInputStream();
            //4.管道流获取数据处理
            byteArrayOutputStream= new ByteArrayOutputStream();
            byte[] buffer = new byte[1024];
            int len;
            while ((len= inputStream.read(buffer))!=-1){
                byteArrayOutputStream.write(buffer,0,len);
            }
            System.out.println(byteArrayOutputStream.toString());

        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                if(serverSocket!=null){
                    serverSocket.close();
                }
                if (accept!=null){
                    accept.close();
                }
                if (inputStream!=null){
                    inputStream.close();
                }
                if (byteArrayOutputStream!=null){
                    byteArrayOutputStream.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }


}

运行结果:

技术图片技术图片

 

Java网络编程:Socket 通信

标签:输出流   网络编程   sock   etc   管道   png   services   try   pac   

原文地址:https://www.cnblogs.com/gtnotgod/p/13369547.html


评论


亲,登录后才可以留言!