客户端代码实现

  1. package java01.SignIn;
  2. import java.io.*;
  3. import java.net.*;
  4. //import ch07.section03.*;
  5. public class socCli {
  6. public static void main(String[] args) throws IOException {
  7. // 指定使用本地IP
  8. //InetAddress addr =InetAddress.getByName(null);
  9. //System.out.println("addr = " + addr);
  10. Socket socket = new Socket("192.168.1.122",53187);
  11. // 将代码放在Try语句中执行,以确保程序能关闭socket
  12. try {
  13. //Socket socket = new Socket("192.168.1.167",8086);
  14. //System.out.println("socket = " + socket);
  15. BufferedReader in =
  16. new BufferedReader(
  17. new InputStreamReader(
  18. socket.getInputStream()));
  19. // 定义一个PrintWriter对象写输出流
  20. PrintWriter out =
  21. new PrintWriter(
  22. new BufferedWriter(
  23. new OutputStreamWriter(
  24. socket.getOutputStream())), true);
  25. //for (int i = 0; i < 10; i++) {
  26. out.println("192.168.1.187:8098:19网络工程2班:xxx3246");
  27. String str = in.readLine();
  28. System.out.println("自服务端: " + str);
  29. // }
  30. out.println("END");
  31. }
  32. finally {
  33. System.out.println("关闭");
  34. socket.close();
  35. }
  36. }
  37. }

服务器端代码实现

  1. package java01.SignIn;
  2. import java.io.*;
  3. import java.net.*;
  4. public class SocS {
  5. // 为这个Socket选择一个断口8080:
  6. public static final int PORT=8098;
  7. public static void main(String[] args) throws IOException {
  8. ServerSocket s = new ServerSocket(8098);
  9. // System.out.println("开始: " + s);
  10. try {
  11. // 生成一个Socket等待连接请求
  12. Socket socket = s.accept();
  13. try {
  14. System.out.println(
  15. "接受连接请求: " + socket);
  16. BufferedReader in =
  17. new BufferedReader(
  18. new InputStreamReader(
  19. socket.getInputStream()));
  20. // 定义一个PrintWriter对象写输出流
  21. PrintWriter out =
  22. new PrintWriter(
  23. new BufferedWriter(
  24. new OutputStreamWriter(
  25. socket.getOutputStream())), true);
  26. while (true) {
  27. String str = in.readLine();
  28. if (str.equals("END")) {
  29. break;
  30. }
  31. System.out.println("自客户端: " + str);
  32. out.println(str);
  33. }
  34. // 关闭socket
  35. }
  36. finally {
  37. System.out.println("关闭...");
  38. socket.close();
  39. }
  40. }
  41. finally {
  42. s.close();
  43. }
  44. }
  45. }

总结与反思:

  • 这次实验只是简单实现,没用用到多线程与阻塞,也没有用到swing实现图形界面,打算以后学了js前端技术后再实现
  • 没用线程只能一对一通信