首页 > 其他分享 >10 UDP 聊天实现

10 UDP 聊天实现

时间:2023-09-09 19:24:41浏览次数:31  
标签:DatagramSocket 10 UDP java packet 聊天 import msg new

package Internet;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;

// UDP实现聊天,两边都是发信方,也是收信方
public class Test10_UDP_Me {
    public static void main(String[] args) throws Exception {
        // 1. 创建自己的端口
        DatagramSocket socket = new DatagramSocket(2005);
        // 2. 不断地建立包裹并发送出去: 可以不停地发消息
           // 从控制台键盘读取信息,并且发送出去
        while (true){
            BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
            String msg= reader.readLine();
            //  byte[] data=(byte[])reader;  这里不能强制转换
            DatagramPacket packet = new DatagramPacket(msg.getBytes(),0,msg.length(),new InetSocketAddress("localhost",2000));
            socket.send(packet);
            if (msg.equals("bye")){
                break;
            } // 结束判定
        }

        // 3. 关闭
        socket.close();

    }
}


///////////////////
package Internet;

import java.net.DatagramPacket;
import java.net.DatagramSocket;

public class Test10_UDP_MyBrother {
    public static void main(String[] args) throws Exception {
        // 1. 创建自己的端口
        DatagramSocket socket = new DatagramSocket(2000);
        // 2. 不停地接收包裹:可以不停地接收信息
        while (true){
            byte[] buffer = new byte[1024];
            DatagramPacket packet = new DatagramPacket(buffer,0,buffer.length);
            socket.receive(packet); // 阻塞式接收:有就接收
            String msg=new String(packet.getData(),0,packet.getLength());
            System.out.println(msg);
            if (msg.equals("bye")){
                break;
            }
        }




        // 3. 关闭
        socket.close(); // 阻塞式接收:不断地接收

    }
}

标签:DatagramSocket,10,UDP,java,packet,聊天,import,msg,new
From: https://www.cnblogs.com/zhanjianhai/p/17690004.html

相关文章

  • 9 UDP 消息发送
    没有客户端和服务端这一说法packageInternet;importjava.net.DatagramPacket;importjava.net.DatagramSocket;importjava.net.InetAddress;importjava.net.SocketException;//UDP:类似发短信//发送端publicclassTest09_UDP_User1{publicstaticvoidma......
  • P1042 [NOIP2003 普及组] 乒乓球
    [NOIP2003普及组]乒乓球题目背景国际乒联现在主席沙拉拉自从上任以来就立志于推行一系列改革,以推动乒乓球运动在全球的普及。其中11分制改革引起了很大的争议,有一部分球员因为无法适应新规则只能选择退役。华华就是其中一位,他退役之后走上了乒乓球研究工作,意图弄明白11分......
  • GYM 104128 M
    M.DraintheWaterTank这道题需要用到向量间的叉积运算。首先输入所有点,储存在数组\(a\)中,并将其全部转化为向量,储存在数组\(b\)中。为了排尽水箱里的所有水,需要找到每一个属于水箱内容物局部最低块中的一个点。所以可以将判断分为两步判断是否为局部最低点:当\(b[i].y<0......
  • 2.10 PE结构:重建重定位表结构
    Relocation(重定位)是一种将程序中的一些地址修正为运行时可用的实际地址的机制。在程序编译过程中,由于程序中使用了各种全局变量和函数,这些变量和函数的地址还没有确定,因此它们的地址只能暂时使用一个相对地址。当程序被加载到内存中运行时,这些相对地址需要被修正为实际的绝对地址,这......
  • 2.10 PE结构:重建重定位表结构
    Relocation(重定位)是一种将程序中的一些地址修正为运行时可用的实际地址的机制。在程序编译过程中,由于程序中使用了各种全局变量和函数,这些变量和函数的地址还没有确定,因此它们的地址只能暂时使用一个相对地址。当程序被加载到内存中运行时,这些相对地址需要被修正为实际的绝对地址,......
  • 下载Windows 10 光盘映像(ISO 文件)
    转载:微软官网win10下载步骤教程-常见问题-PHP中文网1.微软地址:microsoft.com/zh-cn/software-download/windows10ISO/2.win10下载:下载Windows10(microsoft.com) win10专业版ios下载地址:商用Windows10专业版–Microsoft ......
  • CF1106F
    题目链接description定义数列\(f\),当\(i>k\)时,\(f_i=\prod\limits_{j=1}^kf_{i-j}^{b_k}\)模998244353。已知数组\(b\)且\(f_1,f_2,\dots,f_{k-1}\)均等于1,给定\(n,m\)。求任意一个合法的\(f_k\)的取值(在\([0,998244352]\)间),使得\(f_n=m\)无解输出-1\(k......
  • delphi FireDAC 调用 Execute 提示 `[FireDAC][SQL Server Native Client 10.0]字符串
    FireDAC调用Execute提示[FireDAC][SQLServerNativeClient10.0]字符串数据,长度不匹配错误问题调用Execute向SQLServer数据库中批量插入数据时,参数中有BLOB数据类型(ftBlob、ftMemo等)时,出现[FireDAC][Phys][ODBC][Microsoft][SQLServerNativeClient10.0]字符串......
  • CF710D
    题目链接description给定\(0\leqa_1,a_2\leq2*10^9,-2*10^9\leqb_1,b_2,L,R\leq2*10^9\)求\(\sum\limits_{x=\max(L,b1,b2)}^R[a_1\midx-b_1][a_2\midx-b_2]\)solution不妨设\(L=\max(L,b1,b2)\)。把原式化为\(\sum\limits_{x=\lfloor\frac{L-1-b_1}......
  • UDP协议&&UDP广播通信
    UDP协议概念传输层主要的应用协议模型有,TCP,UDP两种。TCP协议占主导地位,绝大多数网络都是借助TCP协议完成数据传输,但UDP也是不了或缺的重要通信手段相较于TCP,UDP通信形式像发短信。不需要建立连接。只需要专心获取数据就可以,省去了三次握手,通信速度可以大大提高,伴随着通信的稳......