最近在做物联网项目,需要使用TCP和传感器进行双向交互,通过这种渠道,找到了下面的代码,写成博客主要也是为了记录一下,以后用到随时可以看。
代码实现
服务端
package com.tcp;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.ObjectInputStream.GetField;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class TalkServer {
public static int i = 0;
private static final int PORT = 9620; // 端口号
private static List<Socket> user_list = new ArrayList<Socket>(); // 保存连接对象
private ExecutorService exec;//线程池
private ServerSocket server;//用来监听端口
public static void main(String[] args) {
// 启动服务器程序
new TalkServer();
}
public TalkServer() {
try {
server = new ServerSocket(PORT);
// 创建一个可根据需要创建新线程的线程池,但是在以前构造的线程可用时将重用它们
exec = Executors.newCachedThreadPool();
System.out.println("服务器已启动!");
Socket client = null;
while (true) {
client = server.accept(); // 接收客户连接
user_list.add(client);// 将用户添加进列表
System.out.println("端口号为: " + user_list.get(i).getPort());// 输出用户端口号
i++;// 列表下标加一
exec.execute(new s_talk(client));<