欢迎大家访问我的个人网站
萌萌的IT人
今天学习了一下java如何实现socket通信,感觉难点反而是在io上,因为java对socket封装已经很完
代码
今天代码花了整个晚上调试,主要原因是io的flush问题和命令行下如何运行具有package的类,不过最后问题基本都解决了,把代码贴出来供大家参考
server
package socket;
import java.io.*;
import java.net.*;
public class TcpServer {
public static void main(String[] args) throws Exception {
ServerSocket server = new ServerSocket(9091);
try {
Socket client = server.accept();
try {
BufferedReader input =
new BufferedReader(new InputStreamReader(client.getInputStream()));
boolean flag = true;
int count = 1;
while (flag) {
System.out.println("客户端要开始发骚了,这是第" + count + "次!");
count++;
String line = input.readLine();
System.out.println("客户端说:" + line);
if (line.equals("exit")) {
flag = false;
System.out.println("客户端不想玩了!");
} else {
System.out.println("客户端说: " + line);
}
}
} finally {
client.close();
}
} finally {
server.close();
}
}
}
package socket;
import java.io.*;
import java.net.*;
import java.util.Scanner;
public class TcpClient {
public static void main(String[] args) throws Exception {
Socket client = new Socket("127.0.0.1", 9091);
try {
PrintWriter output =
new PrintWriter(client.getOutputStream(), true);
Scanner cin = new Scanner(System.in);
String words;
while (cin.hasNext()) {
words = cin.nextLine();
output.println(words);
System.out.println("写出了数据: " + words);
}
cin.close();
} finally {
client.close();
}
}
}
吐槽
java的io还是有点复杂的,蛋疼