Node.js客户端通过socket连接到java服务端

 1 import java.io.DataInputStream;
 2 import java.io.DataOutputStream;
 3 import java.io.IOException;
 4 import java.net.ServerSocket;
 5 import java.net.Socket;
 6 import java.util.List;
 7 import java.util.Timer;
 8 import java.util.TimerTask;
 9 import java.util.concurrent.CopyOnWriteArrayList;
10 
11 /**
12  * @author ct568
13  */
14 public class ChatServer {
15     private final List<ChatThread> chatThreadList = new CopyOnWriteArrayList<>();
16 
17     public static void main(String[] args) {
18         new ChatServer().startServer();
19     }
20 
21     private void startServer() {
22         try {
23             // 开启服务端Socket
24             ServerSocket serverSocket = new ServerSocket(10000);
25             System.out.println("等待客户端连接");
26             while (true) {
27                 // 接受客户端连接请求
28                 Socket socket = serverSocket.accept();
29                 System.out.println("一个客户端已连接");
30                 // 开启线程处理客户端通信
31                 ChatThread ct = new ChatThread(socket);
32                 chatThreadList.add(ct);
33                 ct.start();
34 
35                 new Timer().schedule(new TimerTask() {
36                     @Override
37                     public void run() {
38                         ct.send("hello 你好啊");
39                     }
40                 }, 1000);
41             }
42         } catch (IOException e) {
43             e.printStackTrace();
44         }
45     }
46 
47     private class ChatThread extends Thread {
48         private final Socket socket;
49         private DataInputStream dataInputStream = null;
50         private DataOutputStream dataOutputStream = null;
51 
52         public ChatThread(Socket socket) {
53             super();
54             this.socket = socket;
55         }
56 
57         // 发送信息的函数
58         private void send(String msg) {
59             try {
60                 dataOutputStream.writeUTF(msg);
61                 dataOutputStream.flush();
62             } catch (IOException e) {
63                 e.printStackTrace();
64             }
65         }
66 
67         @Override
68         public void run() {
69             try {
70                 dataInputStream = new DataInputStream(socket.getInputStream());
71                 dataOutputStream = new DataOutputStream(socket.getOutputStream());
72 
73                 // 读取数据
74                 while (true) {
75                     byte[] bys = new byte[1024];
76                     int offset = 0;
77                     int length = dataInputStream.read(bys, offset, bys.length);
78                     String msg = new String(bys, offset, length);
79                     System.out.printf("msg = '%s'\n", msg);
80 
81                     for (ChatThread chatThread : chatThreadList) {
82                         chatThread.send(msg);
83                     }
84                 }
85             } catch (IOException e) {
86                 e.printStackTrace();
87             } finally {
88                 try {
89                     dataOutputStream.close();
90                     dataInputStream.close();
91                     socket.close();
92                 } catch (IOException e) {
93                     e.printStackTrace();
94                 }
95             }
96         }
97 
98     }
99 }
 1 import * as net from 'net'
 2 
 3 const socket = net.createConnection(10000, 'localhost')
 4 
 5 socket.on('close', (had_error: boolean) => {
 6   console.log('had_error', had_error)
 7 });
 8 
 9 socket.on('connect', () => {
10   console.log('connect')
11   socket.write('2021-01-29 09:37:34')
12   console.log('2021-01-29 09:39:27 发送完成')
13 });
14 
15 socket.on('data', (data: Buffer) => {
16   console.log(`data->'${data.toString('utf8')}'`)
17 });
18 
19 socket.on('drain', () => {
20   console.log('drain')
21 });
22 
23 socket.on('end', () => {
24   console.log('end')
25 });
26 
27 socket.on('error', (err: Error) => {
28   console.log('error', err)
29 });
30 
31 socket.on('lookup', (err: Error, address: string, family: string | number, host: string) => {
32   console.log('lookup', err, address, family, host)
33 });
34 
35 socket.on('timeout', () => {
36   console.log('timeout')
37 });

 

posted on 2021-02-01 11:18  cccctttt  阅读(215)  评论(0)    收藏  举报