最近做了,一个java的socket服务【
需要用一个java类去读取另一个txt文件的内容,再此做个笔记,方便以后查看!
port.txt文件内容如下
port=9999
Server.java类如下,加载。。。。。。port.txt的端口号为9999
package test;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Server {
public static void main(String[] args) throws Exception {
final ExecutorService threadPool = Executors.newCachedThreadPool();
// int myport = 0;
final Set<Socket> sockets = new HashSet<>();
String bbbc = "";
String line = "";
try {
/* 读入TXT文件 */
String pathname = ".\\src\\test\\port.txt"; // 绝对路径或相对路径都可以,这里是绝对路径,写入文件时演示相对路径
File filename = new File(pathname); // 要读取以上路径的input。txt文件
InputStreamReader reader = new InputStreamReader(
new FileInputStream(filename)); // 建立一个输入流对象reader
BufferedReader br = new BufferedReader(reader); // 建立一个对象,它把文件内容转成计算机能读懂的语言
line = br.readLine();
bbbc = line.substring(5);
} catch (Exception e) {
e.printStackTrace();
}
int myport=Integer.parseInt(bbbc);
ServerSocket serverSocket = new ServerSocket(myport);
while(true) {
final Socket socket = serverSocket.accept();
sockets.add(socket);
threadPool.execute(new Runnable() {
@Override
public void run() {
try {
final InputStream in = socket.getInputStream();
int b;
while((b = in.read()) != -1) {
for (Socket socket1 : sockets) {
if (socket1 != socket) {
socket1.getOutputStream().write(b);
}
}
}
} catch(IOException e) {
e.printStackTrace();
} finally {
sockets.remove(socket);
}
}
});
}
}
}