java UDP编程 两个客户端是怎么互相通讯的,类似qq那样的 客户端创建时要指定端口吗 开n个窗口要n个端口吗?关于c#中UDP编程

2025-03-05 06:50:02 0

java UDP编程 两个客户端是怎么互相通讯的,类似qq那样的 客户端创建时要指定端口吗 开n个窗口要n个端口吗?关于c#中UDP编程

本文目录

java UDP编程 两个客户端是怎么互相通讯的,类似qq那样的 客户端创建时要指定端口吗 开n个窗口要n个端口吗

UDP是无连接通信,不需要独占端口,所以开一个端口可以接收所有机器发来的消息。可以指定一个端口,所有的客户端都用这个端口接收消息。或者服务器告诉发信人收信人的端口,跟IP地址一样,由服务器统计。

关于c#中UDP编程

//这是一个源码你看看using System;using System.Net;using System.Net.Sockets;using System.Text;using System.Threading;using System.Windows.Forms;namespace UDPClient{ public partial class frmUdp : Form { private UdpClient sendUdpClient; private UdpClient receiveUpdClient; public frmUdp() { InitializeComponent(); IPAddress ips = Dns.GetHostAddresses(““); tbxlocalip.Text = ips.ToString(); int port = 51883; tbxlocalPort.Text = port.ToString(); tbxSendtoIp.Text = ips.ToString(); tbxSendtoport.Text = port.ToString(); } // 接受消息 private void btnReceive_Click(object sender, EventArgs e) { // 创建接收套接字 IPAddress localIp = IPAddress.Parse(tbxlocalip.Text); IPEndPoint localIpEndPoint = new IPEndPoint(localIp, int.Parse(tbxlocalPort.Text)); receiveUpdClient = new UdpClient(localIpEndPoint);Thread receiveThread = new Thread(ReceiveMessage); receiveThread.Start(); } // 接收消息方法 private void ReceiveMessage() { IPEndPoint remoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0); while (true) { try { // 关闭receiveUdpClient时此时会产生异常 byte receiveBytes = receiveUpdClient.Receive(ref remoteIpEndPoint); string message = Encoding.Unicode.GetString(receiveBytes); // 显示消息内容 ShowMessageforView(lstbxMessageView, string.Format(“{0}“, remoteIpEndPoint, message)); } catch { break; } } } // 利用委托回调机制实现界面上消息内容显示 delegate void ShowMessageforViewCallBack(ListBox listbox, string text); private void ShowMessageforView(ListBox listbox, string text) { if (listbox.InvokeRequired) { ShowMessageforViewCallBack showMessageforViewCallback = ShowMessageforView; listbox.Invoke(showMessageforViewCallback, new object { listbox, text }); } else { lstbxMessageView.Items.Add(text); lstbxMessageView.SelectedIndex = lstbxMessageView.Items.Count - 1; lstbxMessageView.ClearSelected(); } } private void btnSend_Click(object sender, EventArgs e) { if (tbxMessageSend.Text == string.Empty) { MessageBox.Show(“发送内容不能为空“,“提示“); return; } // 选择发送模式 if (chkbxAnonymous.Checked == true) { // 匿名模式(套接字绑定的端口由系统随机分配) sendUdpClient = new UdpClient(0); } else { // 实名模式(套接字绑定到本地指定的端口) IPAddress localIp = IPAddress.Parse(tbxlocalip.Text); IPEndPoint localIpEndPoint = new IPEndPoint(localIp, int.Parse(tbxlocalPort.Text)); sendUdpClient = new UdpClient(localIpEndPoint); } Thread sendThread = new Thread(SendMessage); sendThread.Start(tbxMessageSend.Text); } // 发送消息方法 private void SendMessage(object obj) { string message = (string)obj; byte sendbytes = Encoding.Unicode.GetBytes(message); IPAddress remoteIp = IPAddress.Parse(tbxSendtoIp.Text); IPEndPoint remoteIpEndPoint = new IPEndPoint(remoteIp, int.Parse(tbxSendtoport.Text)); sendUdpClient.Send(sendbytes, sendbytes.Length, remoteIpEndPoint); sendUdpClient.Close(); // 清空发送消息框 ResetMessageText(tbxMessageSend); } // 采用了回调机制 // 使用委托实现跨线程界面的操作方式 delegate void ResetMessageCallback(TextBox textbox); private void ResetMessageText(TextBox textbox) { // Control.InvokeRequired属性代表 // 如果控件的处理与调用线程在不同线程上创建的,则为true,否则为false if (textbox.InvokeRequired) { ResetMessageCallback resetMessagecallback = ResetMessageText; textbox.Invoke(resetMessagecallback, new object { textbox }); } else { textbox.Clear(); textbox.Focus(); } } // 停止接收 private void btnStop_Click(object sender, EventArgs e) { receiveUpdClient.Close(); } // 清空接受消息框 private void btnClear_Click(object sender, EventArgs e) { this.lstbxMessageView.Items.Clear(); } }}

推荐关于UDP协议的Java编程的书

1.《零基础学Java电子教程》(机械工业出版社) ,Java程序设计教程(第2版)基础篇 机械工业出版社 , Java程序设计教程(第2版)进阶篇 机械工业出版社2.《JAVA编程思想》3.《锋利的jQuery》4. 《CSS实战手册.第2版》.(美)麦克法兰5.《Spring揭秘》这些书是我仔细研究过的书,讲解的通俗易懂,也很经典,具有代表性。受益匪浅

用java的Udp写聊天程序,为什么不能实现一个端口号同时向两个端口号发送消息不知如何实现,请高手解答

使用DatagramSocket和DatagramPacket其中DatagramSocket使用一个发送的端口号DatagramPacket的参数DatagramPacket(bytes bytes,int bytes.length,InetAddress ip, int port);里的port就是目标端口要向两个端口号发送,需要创建两个DatagramPacket,分别填写两个IP地址和端口号,并用DatagramSocket发送。另外两个端口需要做监听要注意ip要为局域网可以畅通无阻,广域网可能导致网管阻止下面是个例子,发两遍即可。int SERVER_PORT=7000;String severIp=“192.168.1.100“;DatagramSocket clientSocket;try {InetAddress local = InetAddress.getByName(severIp); DatagramPacket dPacket; clientSocket = new DatagramSocket;dPacket = new DatagramPacket(“Hello“.getBytes(“utf-8“),“Hello“.getBytes(“utf-8“).length, local, SERVER_PORT);clientSocket.send(dPacket);//这里是发送byte msg = new byte;DatagramPacket rPacket = new DatagramPacket(msg, msg.length); clientSocket.receive(rPacket);//这里是接收监听} catch (IOException e) {e.printStackTrace(); } clientSocket.close();

各位大虾,急需java的基于udp的即时通讯实例;需要客户端和服务器端;不要数据库的;

给你解释一下过程:基于TCP / IP模式:服务器,打开监听线程(也可以留言??,让系统管理线程)收到的每个请求创建一个套接字每一个插座和一个根据客户端的连接请求,客户端选择合适的客户端套接字绑定,刚刚接到一个客户的信息直接转发到另一个客户端 每个客户端初始化后,立即播出时间已建立UDP模式:在收到客户端的链表保存这个客户给自己的客户。需要自定义消息,包括自己的ID和接收器ID。其他类似TCP模式。

java编程 利用UDP方式,客户端向服务器发送三边值,服务器,根据三边值计算三角形面积返回客户端

创建两个类 分别添加main方法 一个作为server类一个作为client类 

客户端先发送再接收  服务器端先接收再发送

下面给你一个server和client的例子 你在基础上改一下就行了

client发送的时候发送三边值  server接收后 写一个计算三角形面积的函数 把接收到的三边值传入函数计算出结果作为数据返回到client端 

/** *UDPServer */import java.io.*;import java.net.*;class UDPServer{    public static void main(String args)throws IOException{        DatagramSocket  server = new DatagramSocket(5050);        byte recvBuf = new byte;        DatagramPacket recvPacket             = new DatagramPacket(recvBuf , recvBuf.length);        server.receive(recvPacket);        String recvStr = new String(recvPacket.getData() , 0 , recvPacket.getLength());        System.out.println(“Hello World!“ + recvStr);        int port = recvPacket.getPort();        InetAddress addr = recvPacket.getAddress();        String sendStr = “Hello ! I’m Server“;        byte sendBuf;        sendBuf = sendStr.getBytes();        DatagramPacket sendPacket             = new DatagramPacket(sendBuf , sendBuf.length , addr , port );        server.send(sendPacket);        server.close();    }}/** *UDPClient */import java.io.*;import java.net.*;class UDPClient{    public static void main(String args)throws IOException{        DatagramSocket client = new DatagramSocket();                String sendStr = “Hello! I’m Client“;        byte sendBuf;        sendBuf = sendStr.getBytes();        InetAddress addr = InetAddress.getByName(“127.0.0.1“);        int port = 5050;        DatagramPacket sendPacket             = new DatagramPacket(sendBuf ,sendBuf.length , addr , port);        client.send(sendPacket);        byte recvBuf = new byte;        DatagramPacket recvPacket            = new DatagramPacket(recvBuf , recvBuf.length);        client.receive(recvPacket);        String recvStr = new String(recvPacket.getData() , 0 ,recvPacket.getLength());        System.out.println(“收到:“ + recvStr);        client.close();    }}

java中如何检测本机指定的UDP服务端口是否被占用并且自动分配一个可用udp端口;

1.端口占用编译器会报错,可以从错误看出来是不是端口被占用。没有专门的检测工具和方法 2.DatagramSocket(在Java中使用UDP协议编程的相关类) 用于接收和发送UDP的Socket实例。该类有3个构造函数: DatagramSocket():通常用于客户端编程,它并没有特定监听的端口,仅仅使用一个临时的。程序会让操作系统分配一个可用的端口。 DatagramSocket(int port):创建实例,并固定监听Port端口的报文。通常用于服务端DatagramSocket(int port, InetAddress localAddr):这是个非常有用的构建器,当一台机器拥有多于一个IP地址的时候,由它创建的实例仅仅接收来自LocalAddr的报文。 DatagramSocket具有的主要方法如下: 1)receive(DatagramPacket d):接收数据报文到d中。receive方法产生一个“阻塞”。“阻塞”是一个专业名词,它会产生一个内部循环,使程序暂停在这个地方,直到一个条件触发。 2)send(DatagramPacket dp):发送报文dp到目的地。 3)setSoTimeout(int timeout):设置超时时间,单位为毫秒。 4)close():关闭DatagramSocket。在应用程序退出的时候,通常会主动释放资源,关闭Socket,但是由于异常地退出可能造成资源无法回收。所以,应该在程序完成时,主动使用此方法关闭Socket,或在捕获到异常抛出后关闭Socket。 希望对您有帮助谢谢

java UDP编程 两个客户端是怎么互相通讯的,类似qq那样的 客户端创建时要指定端口吗 开n个窗口要n个端口吗?关于c#中UDP编程

本文编辑:admin
udp编程端口 ,java

本文相关文章:


完成端口与线程池的问题?为什么完成端口是win

完成端口与线程池的问题?为什么完成端口是win

本文目录完成端口与线程池的问题为什么完成端口是winIOCP是什么完成端口,到底一个CPU 建几个线程完成端口的重叠I/O完成端口与线程池的问题1、一般式cpu个数的2倍+2。2、select可以传入参数进行组合,包括FD_READ、FD_

2025年3月30日 01:20

更多文章:


asp网页源码在哪里下载(下载网站ASP)

asp网页源码在哪里下载(下载网站ASP)

本文目录下载网站ASP怎么下载网上的单个asp页面源代码有什么办法将别人网站的一个ASP网页源文件下载下来下载网站ASP楼上的答非所问,我想楼主是想要下载别人的网站源代码吧?呵呵,说实话,想要找这样的工具是不可能的,如果你是站长,你的网站会

2025年2月12日 13:20

结构体数组初始化赋值(定义一个结构体数组,可以在初始化里直接赋值吗比如 struct a{ int d=0; }b[1)

结构体数组初始化赋值(定义一个结构体数组,可以在初始化里直接赋值吗比如 struct a{ int d=0; }b[1)

本文目录定义一个结构体数组,可以在初始化里直接赋值吗比如 struct a{ int d=0; }b[1请说明结构体初始化数据赋值的几种方式定义一个结构体数组,可以在初始化里直接赋值吗比如 struct a{ int d=0; }b[1st

2025年2月13日 22:20

ruler是什么意思中文(ruler怎么读)

ruler是什么意思中文(ruler怎么读)

本文目录ruler怎么读ruler是什么意思中文尺子的英语是什么尺子用英语怎么说请拼写“ruler怎么拼ruler怎么读ruler英  n.统治者;支配者;直尺He is the toughest military ruler yet a

2025年2月27日 04:20

队列口令喊法视频(军事队列口令中,向左向右看齐怎么叫的)

队列口令喊法视频(军事队列口令中,向左向右看齐怎么叫的)

本文目录军事队列口令中,向左向右看齐怎么叫的队列口令喊法如何教学军训喊口令队列口令怎样喊更响亮更有气势军事训练口令如何喊军事队列口令中,向左向右看齐怎么叫的向左是预令,看是动令,齐的声音在人多时要较长,在人少时要短,同样向右看齐也是一样的,

2025年3月17日 16:50

16-May-20(16----20 英语填空)

16-May-20(16----20 英语填空)

本文目录16----20 英语填空是May 20th还是May 201到21的英文序数词16----20 英语填空complain aboutaffected my decision.It’s our dutyWith the help o

2025年3月13日 09:30

pivoting(pivoting是什么意思)

pivoting(pivoting是什么意思)

本文目录pivoting是什么意思stowing和loading的区别是啥pivoting是什么意思  pivot英 第三人称单数:pivots 复数:pivots 现在分词:pivoting 过去式:pivoted 过去分词:pivote

2025年3月20日 22:20

模拟器是什么意思?模拟器是干什么用的

模拟器是什么意思?模拟器是干什么用的

本文目录模拟器是什么意思模拟器是干什么用的安卓模拟器到底哪个好用什么是模拟器虚拟机和模拟器有什么区别模拟器是什么linux安卓模拟器哪个好请问,在linux(ubuntu)哪款android模拟器可以模仿步频,genymotion已试不行,

2025年2月15日 23:20

return(什么是Return)

return(什么是Return)

本文目录什么是Returnreturn back和return区别是什么C++编程中,哪些需要return 0,哪些不用return 0到底是什么意思,什么用途什么地方必须要用到它through out 什么意思ordinary,commo

2025年3月20日 09:40

表格怎么设置日期格式?求一js正则表达式验证YYYY/MM/DD格式日期

表格怎么设置日期格式?求一js正则表达式验证YYYY/MM/DD格式日期

本文目录表格怎么设置日期格式求一js正则表达式验证YYYY/MM/DD格式日期英语的日期格式是什么样的YYYYMMDD怎么写日期美国日期格式是什么java 正则表达式匹配日期问题 如要匹配下面两种格式,请分别写出正则表达式 验证date格式

2025年2月23日 13:10

comfortablely(seat什么意思 comfortable和comfortablely的词性 谢谢)

comfortablely(seat什么意思 comfortable和comfortablely的词性 谢谢)

本文目录seat什么意思 comfortable和comfortablely的词性 谢谢comfortable的副词形式seat什么意思 comfortable和comfortablely的词性 谢谢seatn. 席位,座位; 所在地; 场

2025年3月11日 13:30

什么叫明文密码、密文密码?什么是明文密码

什么叫明文密码、密文密码?什么是明文密码

本文目录什么叫明文密码、密文密码什么是明文密码什么是明文密码:是数字还是字母举例说明明文密码是什么意思租号玩明文账号密码是什么意思密码体系中明文是指明文密码是什么什么是明文密钥什么叫明文密码、密文密码密文密码就是你输密码时显示的是*****

2025年2月12日 14:20

vba下载文件(vba下载网络文件的问题)

vba下载文件(vba下载网络文件的问题)

本文目录vba下载网络文件的问题已知用户名和密码,怎样用VBA后台登录网站 怎样用vba从后台下载网站上各未读订单名称的附件EXCEL中VBA,自动点击指定网页中下载按钮,并下载文件vba下载网络文件的问题在出错语句前加一句错误处理语句试试

2025年3月18日 21:30

web培训机构(求大家推荐web前端培训机构)

web培训机构(求大家推荐web前端培训机构)

本文目录求大家推荐web前端培训机构web前端培训机构排名求大家推荐web前端培训机构web前端培训机构更推荐【达内教育】,该机构师资力量雄厚,口碑极佳。选择web前端培训机构的注意事项:1、看企业背景、办学历史、模式、web前端开班节奏。

2025年2月25日 21:00

warned什么意思(词汇搭配:有关warn的几条重要搭配)

warned什么意思(词汇搭配:有关warn的几条重要搭配)

本文目录词汇搭配:有关warn的几条重要搭配warned 是什么意思词汇搭配:有关warn的几条重要搭配有关warn的搭配:1、warn sb.not to do sth=warn sb. of sth 警告某人某事。2、warn of:发

2025年4月5日 03:40

dead or alive(经典游戏双截龙主题曲DEAD OR ALIVE歌词,女歌手唱的,如果有翻译的话追加赏金!)

dead or alive(经典游戏双截龙主题曲DEAD OR ALIVE歌词,女歌手唱的,如果有翻译的话追加赏金!)

本文目录经典游戏双截龙主题曲DEAD OR ALIVE歌词,女歌手唱的,如果有翻译的话追加赏金!翻译一下歌词加藤和树-Dead or Alivedead or alive是什么意思鲁邦三世:DEAD OR ALIVE好看吗Dead or A

2025年3月17日 07:10

uptodate是什么意思(uptodate是什么意思及反义词)

uptodate是什么意思(uptodate是什么意思及反义词)

本文目录uptodate是什么意思及反义词yoursoftwareisuptodate是什么意思rsync uptodate什么意思uptodate是什么意思及反义词up to date 英We’ll keep you up to d

2025年3月15日 22:00

listview属性(ListView中单个属性的设置)

listview属性(ListView中单个属性的设置)

本文目录ListView中单个属性的设置ListView控件的属性如何利用delphi中listview的data属性c#listview的 items属性怎么用简述listview控件的工作模式listview控件视图通过哪个属性修改视图

2025年3月17日 18:40

text什么意思(手机中Text文件是什么意思)

text什么意思(手机中Text文件是什么意思)

本文目录手机中Text文件是什么意思text在c语言中是什么意思Android 开发里面如何点击Button将EditText里面的内容显示在textView里edittext=nut什么意思安卓怎么让edittext输入中文Android

2025年3月8日 00:00

j2me模拟器强加好友(怎么才能添加很多微信好友)

j2me模拟器强加好友(怎么才能添加很多微信好友)

本文目录怎么才能添加很多微信好友电脑上微信如何搜索添加好友怎么才能添加很多微信好友这个有很多方法1、电话直接添加2、扫码二维码添加3、微信号添加4、建群直接添加5、摇一摇添加等等很多种方法,一般微信5000人就满了,无法再添加了,如果还要添

2025年3月4日 19:40

arrange的名词形式(安排英语单词怎么写)

arrange的名词形式(安排英语单词怎么写)

本文目录安排英语单词怎么写求arrange的具体用法.arrange的形式organize名词动词形容词副词形式分别是什么,用法是什么谢谢各位arrange的形容词和名词安排英语单词怎么写arrangeI’ve arranged to se

2025年2月21日 09:40

近期文章

million billion(million,billion和thousand之间应该怎么转化 要举例的那种 谢谢)
2025-04-05 17:30:01
本站热文

harbor,port,pier的区别?谁能解释“harbour“(港口)与“pier“(码头)的区别
2025-02-22 17:40:03 浏览:18
ibatis foreach(ibatis 批量update操作)
2025-02-10 23:40:06 浏览:7
endless rain(endless rain表达什么情感)
2025-02-14 06:00:02 浏览:6
标签列表

热门搜索