当前位置: 首页 > news >正文

站长联盟网站建设有哪些岗位

站长联盟,网站建设有哪些岗位,蓝色网站欣赏,h5响应式网站模板下载JavaTCP协议实现一对一聊天与UDP协议实现群聊案例 1.TCP协议实现一对一聊天 1.1服务端运行结果 1.2客服端运行结果 1.3代码汇总 服务端 package twentyone;import java.io.IOException; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.…

JavaTCP协议实现一对一聊天与UDP协议实现群聊案例

1.TCP协议实现一对一聊天

1.1服务端运行结果

在这里插入图片描述

1.2客服端运行结果

在这里插入图片描述

1.3代码汇总

服务端
package twentyone;import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;public class Server {public static void main(String[] args) {try {ServerSocket serverSocket = new ServerSocket(12345); // 使用端口12345System.out.println("等待客户端连接...");Socket clientSocket = serverSocket.accept(); // 等待客户端连接System.out.println("客户端已连接");// 获取输入输出流BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);// 读取客户端消息并回复String clientMessage;while ((clientMessage = in.readLine()) != null) {System.out.println("张超(客户端): " + clientMessage);// 从控制台读取服务器消息并发送给客户端BufferedReader consoleReader = new BufferedReader(new InputStreamReader(System.in));System.out.print("  蒂蒂(服务器): ");String serverMessage = consoleReader.readLine();out.println(serverMessage);}} catch (IOException e) {e.printStackTrace();}}
}
客户端
package twentyone;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;public class Client {public static void main(String[] args) {try {Socket socket = new Socket("localhost", 12345); // 连接服务器// 获取输入输出流BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));PrintWriter out = new PrintWriter(socket.getOutputStream(), true);// 从控制台读取客户端消息并发送给服务器BufferedReader consoleReader = new BufferedReader(new InputStreamReader(System.in));String clientMessage;while (true) {System.out.print("张超(客户端): ");clientMessage = consoleReader.readLine();out.println(clientMessage);// 读取服务器消息并打印String serverMessage = in.readLine();System.out.println("蒂蒂(服务器)" + serverMessage);}} catch (IOException e) {e.printStackTrace();}}
}

2.UDP协议实现群聊

2.1服务端运行结果

在这里插入图片描述

在这里插入图片描述

2.2客户端运行结果

在这里插入图片描述

2.3代码汇总

第一服务端
package twentyone;import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;public class UDPServer {public static void main(String[] args) {try {DatagramSocket serverSocket = new DatagramSocket(12345);System.out.println("第一个服务器已启动,等待客户端加入...");while (true) {byte[] receiveData = new byte[1024];// 接收客户端消息DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);serverSocket.receive(receivePacket);String clientMessage = new String(receivePacket.getData(), 0, receivePacket.getLength());System.out.println("第一个服务器收到来自 " + receivePacket.getAddress() + ":" + receivePacket.getPort() + " 的消息: " + clientMessage);// 广播消息给其他客户端broadcastMessage(serverSocket, clientMessage, receivePacket.getAddress(), receivePacket.getPort());}} catch (Exception e) {e.printStackTrace();}}private static void broadcastMessage(DatagramSocket serverSocket, String message, InetAddress excludeAddress, int excludePort) {try {byte[] sendData = message.getBytes();// 获取广播地址InetAddress broadcastAddress = InetAddress.getByName("255.255.255.255");int broadcastPort = 12345;// 广播消息给所有客户端,除了发起广播的客户端DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, broadcastAddress, broadcastPort);serverSocket.send(sendPacket);} catch (Exception e) {e.printStackTrace();}}
}
第二服务端
package twentyone;import java.net.DatagramPacket;
import java.net.DatagramSocket;public class SecondUDPServer {public static void main(String[] args) {try {DatagramSocket serverSocket = new DatagramSocket(12346);System.out.println("第二个服务器已启动,等待客户端加入...");while (true) {byte[] receiveData = new byte[1024];// 接收客户端消息DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);serverSocket.receive(receivePacket);String clientMessage = new String(receivePacket.getData(), 0, receivePacket.getLength());System.out.println("第二个服务器收到来自 " + receivePacket.getAddress() + ":" + receivePacket.getPort() + " 的消息: " + clientMessage);}} catch (Exception e) {e.printStackTrace();}}
}
客户端
package twentyone;import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.InetAddress;class ConsoleHelper {private static final BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));public static String readLine(String prompt) {try {System.out.print(prompt);return reader.readLine();} catch (IOException e) {throw new RuntimeException("Error reading from console", e);}}
}public class UDPClient {public static void main(String[] args) {try {DatagramSocket clientSocket = new DatagramSocket(); // 随机分配端口// 启动接收线程new Thread(() -> receiveMessages(clientSocket, 3)).start();while (true) {// 从控制台读取消息并发送给服务端1和服务端2String message = ConsoleHelper.readLine("客户端: ");byte[] sendData = message.getBytes();// 发送消息给服务端1DatagramPacket sendPacket1 = new DatagramPacket(sendData, sendData.length, InetAddress.getByName("localhost"), 12345);clientSocket.send(sendPacket1);// 发送消息给服务端2DatagramPacket sendPacket2 = new DatagramPacket(sendData, sendData.length, InetAddress.getByName("localhost"), 12346);clientSocket.send(sendPacket2);}} catch (Exception e) {e.printStackTrace();}}private static void receiveMessages(DatagramSocket clientSocket, int maxReceiveCount) {try {byte[] receiveData = new byte[1024];int receiveCount = 0;while (receiveCount < maxReceiveCount) {// 接收服务器广播消息DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);clientSocket.receive(receivePacket);String serverMessage = new String(receivePacket.getData(), 0, receivePacket.getLength());System.out.println("服务器: " + serverMessage);receiveCount++;}} catch (Exception e) {e.printStackTrace();}}
}
http://www.yayakq.cn/news/318720/

相关文章:

  • 取个网站建设公司名字如何制作网页游戏
  • jsp网站开发详解 赵增敏手机怎么弄微信公众号
  • 教育网站建设网升级wordpress需要ftp
  • 创建网站基本步骤百度网站名片
  • 织梦做视频网站校园网站 建设 意义
  • 网站备案的具体流程图网络科技公司排名
  • 阜沙网站建设咨询服务网站源码
  • 仿牌网站怎么做301跳转泰安房产网签西湖春晓
  • 山东省个人网站备案建立用英语怎么说
  • 新网站上线广州天华建筑设计有限公司
  • php做原生直播网站推广公司网站
  • 云南火电建设有限公司网站视频转链接在线生成
  • 关键词优化的内容网站优化建设山东
  • 做家具商城网站wordpress分享有礼
  • 做网站的费用入账网站制作功能多少钱
  • 做土特产的网站做网站的硬件成本
  • 网站关键词突然搜不到网页设计代码html个人简介
  • 做淘宝客网站是如何盈利的六安seo曝光行者seo
  • 义乌门户网站建设wordpress 改变域名
  • 专门做私人定制旅游的网站网站备案号什么情况下被注销
  • 网站挂服务器后图片不显示安康市网站建设
  • 做网站80端口食品代理网
  • 北京网站建设华网天下买送两年手机提取网页视频下载
  • 手表网站欧米茄官网苏州好的网络科技公司
  • 蓟县集团网站建设新野微网站建设
  • 鹤岗市建设局网站英文网站设计模板
  • 佛山做网站公司虚拟主机 多个网站
  • 浙江住房和建设网站首页门户网站报价
  • 如何在社交网站上做视频推广qtranslate wordpress
  • 河北网站开发哪家好做网站用别人的源码可以吗