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,这又是什么意思?如果,在第二行,把构造里面的那个参数给去掉,会怎样?

解决方案 »

  1.   

    对了,还有一个问题
    3、UdpClient.Send,不是单线程吗?怎么执行了这个方法,客户端还没接收数据,它就执行下面的代码了?
      

  2.   


    #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;
    }