[Java语言] Java Socket多线程编程示例

本文介绍了一个简单的客户端-服务器聊天室程序的设计与实现。客户端通过Socket连接服务器并发送消息,服务器接收消息并通过多线程处理每个客户端连接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

客户端代码如下:

  1. import java.io.*;
  2. import java.net.*;
  3. import java.util.Scanner;
  4. public class SimpleChatClient {
  5. BufferedReader reader;
  6. PrintWriter writer;
  7. Socket sock;
  8. http://m.nvzi91.cn/fujianyan/29424.html
  9. public void go(){
  10. System.out.println("客户端启动!");
  11. setUpNetworking();
  12. //发送数据到服务器
  13. Scanner scanner=new Scanner(System.in);
  14. String sendString=scanner.nextLine();
  15. while(sendString!=null&&!sendString.equals("byebye")){
  16. writer.println(sendString);
  17. writer.flush();
  18. sendString=scanner.nextLine();
  19. }
  20. scanner.close();
  21. System.out.println("客户端退出!");
  22. }
  23. public void setUpNetworking(){
  24. try {
  25. sock=new Socket("127.0.0.1",5000);
  26. InputStreamReader streamReader=new InputStreamReader(sock.getInputStream());
  27. reader=new BufferedReader(streamReader);
  28. writer=new PrintWriter(sock.getOutputStream());
  29. System.out.println("networking established");
  30. } catch (IOException e) {
  31. // TODO Auto-generated catch block
  32. e.printStackTrace();
  33. }http://m.nvzi91.cn/gongjingmilan/29425.html
  34. }
  35. public static void main(String[] args) {
  36. // TODO Auto-generated method stub
  37. SimpleChatClient client=new SimpleChatClient();
  38. client.go();
  39. }
  40. }
复制代码

服务器端代码如下:
  1. import java.io.*;
  2. import java.net.*;
  3. public class SimpleChatServer {
  4. //内部类
  5. public class ClientHandler implements Runnable{
  6. BufferedReader reader;
  7. Socket sock;
  8. http://m.nvzi91.cn/gongjingmilan/29426.html
  9. public ClientHandler(Socket clientSocket){
  10. sock=clientSocket;
  11. InputStreamReader isReader;
  12. try {
  13. isReader = new InputStreamReader(sock.getInputStream());
  14. reader=new BufferedReader(isReader);
  15. } catch (IOException e) {
  16. // TODO Auto-generated catch block
  17. e.printStackTrace();
  18. }
  19. }
  20. @Override
  21. public void run() {
  22. // TODO Auto-generated method stub
  23. String messageString;
  24. try {
  25. while((messageString=reader.readLine())!=null){
  26. System.out.println("read "+messageString);
  27. }
  28. } catch (IOException e) {
  29. // TODO Auto-generated catch block
  30. System.out.println("有一个连接断开");
  31. }
  32. }
  33. /m.nvzi91.cn
  34. }
  35. public void go(){
  36. System.out.println("服务器启动成功!");
  37. ServerSocket serverSock;
  38. try {
  39. serverSock = new ServerSocket(5000);
  40. while(true){
  41. Socket clientSocket=serverSock.accept();
  42. Thread thread=new Thread(new ClientHandler(clientSocket));
  43. thread.start();
  44. System.out.println("got a connection!");
  45. }
  46. } catch (IOException e) {
  47. // TODO Auto-generated catch block
  48. e.printStackTrace();
  49. }
  50. }
  51. public static void main(String[] args) {
  52. // TODO Auto-generated method stub
  53. new SimpleChatServer().go();
  54. }
  55. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值