源码很简单:
  TempRecord.SeqNum:=100001;
  //向buf写东西
  PInteger(@TempRecord.Buf[1])^:=DATAGRAM;
  PInteger(@TempRecord.Buf[1+INTLEN])^:=TempRecord.SeqNum;
  PInteger(@TempRecord.Buf[1+2*INTLEN])^:=NEWUSERREG;
  CopyMemory(@TempRecord.Buf[1+3*INTLEN],@str[1],Length(Str));
  //将buf的东西写到Stream中去
  SendStream.WriteBuffer(TempRecord.buf,TempRecord.BufLen);
  //发送Stream
  ClientUDP.SendStream(SendStream);

解决方案 »

  1.   

    打开跟连接没关系,不管是TCP,UDP没有插槽句柄都是不能使用的。根据你的例子,你应该在ClientUDP.SendStream(SendStream);之前设置好ClientUDP的远程地址和远程端口,再调用ClientUDP.Connect;
      

  2.   

    补充一下:UDP一般不区分服务器和客户端,在编程中他们的大部分代码都是相同的,
    区别是:
         一、客户端可以不掉用bind方法进行端口和Ip地址绑定,服务器端则必须调用,否则内核无法将数据发送到客户进程。
        二、在监测是否有数据到达的方法有些不同,客户端一般是发送完数据马上调用RecvFrom方法读取服务器的应答。
           服务器端则采用轮询的方法监测是否有数据到达,因为服务器不知道客户端什么时候发送数据。