socketは2台のコンピュータを接続してjavaを通信します
3663 ワード
ネットで見て、テストに成功して、書きます
サーバ側
クライアント
サーバ側
import java.net.*;
import java.io.*;
public class Server {
private ServerSocket server;
private Socket client;
public Server() {
boolean flag = true;
try {
server = new ServerSocket(8888); //
System.out.println(" ......");
while (flag) {
client = server.accept(); //
new ServerThread(client).start();
}
server.close();
} catch (Exception e) {
}
}
public static void main(String[] args) {
new Server();
}
private class ServerThread extends Thread {
private Socket clientThread;
private PrintStream out;
private BufferedReader in;
private boolean flag = true;
public ServerThread(Socket client) {
this.clientThread = client;
System.out.println(" , !!");
}
public void run() {
try {
/*
* : 300 , 300
* , ,
*/
clientThread.setSoTimeout(300000);
out = new PrintStream(client.getOutputStream());
in = new BufferedReader(new InputStreamReader(client.getInputStream()));
while (flag) {
String str = in.readLine(); //
System.out.println(" :" + str);
out.println(" !!");
}
client.close();
} catch (Exception e) {
// ,
if (e.getMessage() == "Connection reset") {
System.out.println(" !!");
}
}
}
}
}
クライアント
import java.net.*;
import java.io.*;
public class Client {
private Socket client;
public Client() {
try {
System.out.println(" ......");
client = new Socket("192.168.218.168", 8888); //
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintStream out = new PrintStream(client.getOutputStream());;
boolean flag = true;
System.out.println(" , !!");
while (flag) {
System.out.printf(" :");
out.println(input.readLine()); //
//
if (isConnected()) {
System.out.println(" !!");
System.out.println(" :" + in.readLine());
} else {
System.out.println(" !!");
System.out.println(" !!");
client.close();
break;
}
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
// ,
// OutputStream ,
// , sendUrgenData
public boolean isConnected() {
try {
client.sendUrgentData(0xFF);
return true;
} catch (Exception e) {
e.printStackTrack();
return false;
}
}
public static void main(String[] args) {
new Client();
}
}