1 IPEndPoint remoteIpEndIPoint = new IPEndPoint(IPAddress.Any, 8002);
2 udpReceive = new UdpClient(remoteIpEndIPoint);
3 IPEndPoint iep = new IPEndPoint(IPAddress.Any, 0);
4 //接收从远程主机发送过来的信息
5 while (true)
6 {
7 //ref表示引用类型的 IPPoint实例接收消息
8 byte[] receiveBytes = udpReceive.Receive(ref iep);
9 string returnData = Encoding.UTF8.GetString(receiveBytes);
10 string message = "来自" + iep.ToString() + "的消息";
11 //显示消息 并以message为消息的标题
12 DialogResult result = MessageBox.Show(returnData, message);
13 }问题如下:
1、第一行,IPAddress.Any,是什么意思?有的资料解释:提供一个IP地址,指示服务器应侦听所有网络接口上的客户端活动。既然要侦听所有网络接口上的客户端活动,那为什么还要指定一个端口号呢?这个“客户端活动”指的是,所有的客户端吗?
2、第二行,实例化的时候,指定了一个IPEndPoint类型。有的资料解释:构造函数用IPEndPoint,是用来指定发送和接收数据的 IP 地址和端口号,那么,在第八行Recive的时候,又ref了,另一个IPEndPoint,这又是什么意思?如果,在第二行,把构造里面的那个参数给去掉,会怎样?
2 udpReceive = new UdpClient(remoteIpEndIPoint);
3 IPEndPoint iep = new IPEndPoint(IPAddress.Any, 0);
4 //接收从远程主机发送过来的信息
5 while (true)
6 {
7 //ref表示引用类型的 IPPoint实例接收消息
8 byte[] receiveBytes = udpReceive.Receive(ref iep);
9 string returnData = Encoding.UTF8.GetString(receiveBytes);
10 string message = "来自" + iep.ToString() + "的消息";
11 //显示消息 并以message为消息的标题
12 DialogResult result = MessageBox.Show(returnData, message);
13 }问题如下:
1、第一行,IPAddress.Any,是什么意思?有的资料解释:提供一个IP地址,指示服务器应侦听所有网络接口上的客户端活动。既然要侦听所有网络接口上的客户端活动,那为什么还要指定一个端口号呢?这个“客户端活动”指的是,所有的客户端吗?
2、第二行,实例化的时候,指定了一个IPEndPoint类型。有的资料解释:构造函数用IPEndPoint,是用来指定发送和接收数据的 IP 地址和端口号,那么,在第八行Recive的时候,又ref了,另一个IPEndPoint,这又是什么意思?如果,在第二行,把构造里面的那个参数给去掉,会怎样?
解决方案 »
- 【在线等】【急】求助啊,异步tcp中使用了与请求的协议不兼容的地址。
- C# CSS架构
- C#.net combox的SelectedIndexChanged问题
- 在DataGrid中,有关列标题的问题
- C#网络相关,谁能给一个验证客户端是否在线的例子
- FLV视频上传和播放代码?
- c#.net可以通OLEDB的方式(不是ODBC)既对Access97的数据库操作,又对Access2000(或Access2002)进行读写操作吗?
- ADOCONNECTION与OLEDBCONNECTION问个明白~谢
- 关于 c 的宏定义转为 c#函数的问题(50分)
- 请教WinForm中如何重置Combobox控件
- OWC中怎么样把XML文件(如data.xml)的数据传给数据透视表(PivotTable)
- 帮忙看下这段代码是哪儿的错
3、UdpClient.Send,不是单线程吗?怎么执行了这个方法,客户端还没接收数据,它就执行下面的代码了?
#include <iostream>
#include <cstdlib>
#include <cstring>
#define M 20
using namespace std;
typedef char ElemType;typedef struct {
ElemType stack[M];
int top;
}stacknode;void init(stacknode *st){
st->top = 0;
}void push(stacknode *st, ElemType x){
if(st->top == M){
printf("the stack is overflow !\n");
} else{
st->top = st->top+1;
st->stack[st->top] = x;
}
}void pop(stacknode *st){
st->top = st->top - 1;
}int main(int argc, char *argv[]){
char s[M];
stacknode S,*sp = &S;;
int i,k;
printf("create a empty stack !\n");
init(sp);
gets(s);
for(i = 0; i < strlen(s); i++){
if(s[i] == '(')
push(sp,s[i]);
if(s[i]== ')')
pop(sp);
}
if(sp->top == 0)
printf("左括号是匹配的 !\n");
else
printf("左括号不是匹配的 !\n");
system("PAUSE");
return EXIT_SUCCESS;
}