| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1597 人关注过本帖
标题:[求助]UDP传输 程序之间的通信问题
取消只看楼主 加入收藏
noshow
Rank: 2
等 级:新手上路
威 望:4
帖 子:1127
专家分:0
注 册:2006-4-21
收藏
 问题点数:0 回复次数:5 
[求助]UDP传输 程序之间的通信问题

// This constructor arbitrarily assigns the local port number.
UdpClient udpClient = new UdpClient(11000);
try{
udpClient.Connect("www.contoso.com", 11000);

// Sends a message to the host to which you have connected.
Byte[] sendBytes = Encoding.ASCII.GetBytes("Is anybody there?");

udpClient.Send(sendBytes, sendBytes.Length);

// Sends a message to a different host using optional hostname and port parameters.
UdpClient udpClientB = new UdpClient();
udpClientB.Send(sendBytes, sendBytes.Length, "AlternateHostMachineName", 11000);

//IPEndPoint object will allow us to read datagrams sent from any source.
IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0);

// Blocks until a message returns on this socket from a remote host.
Byte[] receiveBytes = udpClient.Receive(ref RemoteIpEndPoint);
string returnData = Encoding.ASCII.GetString(receiveBytes);

// Uses the IPEndPoint object to determine which of these two hosts responded.
Console.WriteLine("This is the message you received " +
returnData.ToString());
Console.WriteLine("This message was sent from " +
RemoteIpEndPoint.Address.ToString() +
" on their port number " +
RemoteIpEndPoint.Port.ToString());

udpClient.Close();
udpClientB.Close();

}
catch (Exception e ) {
Console.WriteLine(e.ToString());
}


我想请问一下
这段程序执行到红线的那个地方是不是就停住了
一直到这个IP地址的那个端口接收到了消息后才继续往下执行呀?

[此贴子已经被作者于2006-10-17 17:29:41编辑过]

搜索更多相关主题的帖子: UDP 通信 传输 
2006-10-17 17:09
noshow
Rank: 2
等 级:新手上路
威 望:4
帖 子:1127
专家分:0
注 册:2006-4-21
收藏
得分:0 

在同一台机器上有2个程序都在跑
它们之间需要互相传输数据
我想用UDP实现
是不是每个程序都得写个SERVER CLIENT呀
然后一直while(true)监听端口接收数据
如果这样的话会不会机器负荷很大呀


此号自封于2006年11月30日
2006-10-17 17:21
noshow
Rank: 2
等 级:新手上路
威 望:4
帖 子:1127
专家分:0
注 册:2006-4-21
收藏
得分:0 

怎么样实现这个功能比较好
线程吗?


此号自封于2006年11月30日
2006-10-17 17:23
noshow
Rank: 2
等 级:新手上路
威 望:4
帖 子:1127
专家分:0
注 册:2006-4-21
收藏
得分:0 
以下是引用chenjin145在2006-10-17 17:25:42的发言:

一般在自己機器上

一個程序上面發 下面就接 就ok了

線程sleep(x) 负荷不會大

反正系統就是一直在死循環

不過用異步就好了 2005好像udp也有異步

那就是说2个程序各自都开一个线程不停的检测是否有消息到达?


此号自封于2006年11月30日
2006-10-17 17:32
noshow
Rank: 2
等 级:新手上路
威 望:4
帖 子:1127
专家分:0
注 册:2006-4-21
收藏
得分:0 

[CODE] byte[] data = new byte[1024];
IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 9050);
UdpClient newsock = new UdpClient(ipep);
Console.WriteLine("Waiting for a client...");
IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
data = newsock.Receive(ref sender);
Console.WriteLine("Message received from {0}:", sender.ToString());
Console.WriteLine(Encoding.ASCII.GetString(data, 0, data.Length));
string welcome = "Welcome to my test server";
data = Encoding.ASCII.GetBytes(welcome);
newsock.Send(data, data.Length, sender);
while(true)
{
data = newsock.Receive(ref sender);

Console.WriteLine(Encoding.ASCII.GetString(data, 0, data.Length));
newsock.Send(data, data.Length, sender);
}[/CODE]

比如这段代码
我在控制台运行不是很耗用系统资源
如果我内嵌到我的程序里一直跑应该也没问题吧?


此号自封于2006年11月30日
2006-10-17 17:41
noshow
Rank: 2
等 级:新手上路
威 望:4
帖 子:1127
专家分:0
注 册:2006-4-21
收藏
得分:0 
以下是引用chenjin145在2006-10-17 17:47:32的发言:
不用線程
導致ui沒辦法響印

我这2个程序都是被动触发的
情况1:
A程序可能接收到了一个新消息M1 处理完后变为M2要发给B程序 来处理
情况2:
B程序也可能收到一个新的消息N1 处理后变问N2 然后发给A程序来处理

A,B不是一直在运行的 只有在消息到达的时候才触发
也就是说A,B会在一个随即的时间点启动处理到达的消息
比如短信消息 会随即到达

我想让A,B之间通信,想不到好的办法哦


此号自封于2006年11月30日
2006-10-17 17:58
快速回复:[求助]UDP传输 程序之间的通信问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019635 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved