我只用过vb,但我知道你若是在同一台机上用winsock的话,其服务端的端口必须与客户端的端口不同(而且你用了band属性),除非用随机值.
所以解决的方法是将不同的端口号分别给服务端与客户端,这样问题就可以解决了:)
其实仔细想想就明白了.

解决方案 »

  1.   

    问题是服务器的侦听端口必须和客户端连接端口必须一致,bind好像是connect前必须作的吧
      

  2.   

    是这样的:首先你要分清楚作什么程序是udp,还是tcp,我只说tcp。其实bind并不需要,首先你要申请一个socket,用create(),他有两个参数,第一个是用于接收数据的本地端口,和类型(SOCK_STEAME\SOCK_DGRAM),这是任何程序都需要的,然后服务器开始listen(),不用写参数,客户端用connect()两个参数,第一个是ip地址直接写就行,第二个是服务端接收的端口,必须create过。那么在服务端的onAccept中写上Accept()一个参数,是用于接收的socket的指针。
    然后就receive()两个参数,一个是用于接收的buffer(可以是数组、结构),另一个是buffer的大小。这就行了。至于10048是端口或地址已被占用,换一个试试。
      

  3.   

        sockaddr_in中的sin_port为主机字节顺序,因为这个信息只会在socket的实现中用到,与网络无关。unsigned long inet_addr ( const char FAR * cp )可返回网络字节顺序的IP地址,(其参数是型为"10.1.1.14"的IP地址),可直接用在in_addr结构的S_un.S_addr中。
        如果你使用Socket API的话,服务端必须用bind(用CSocket就不用了),bind中的端口需和客户端connect中的一致。客户端不需bind(对于面向连接的,也是最常用的)。还有,在服务端建立socket是必须指定一个port,而在客户端可将(一般也是这么做的)端口设为0,在运行时由系统为其动态分配端口。