创建失败
给分 必须大于20小于100 系统限制,结贴后在付100分...
------------------------
初衷:
我想要自己完成nc监听的功能,
比如nc -lp 520, 会用重复绑定的方式在本机520端口上绑定一个端口, 这个只接受一个链接, 你可以打开多个nc来监听520端口, 如果第一个nc已经接受到了一个链接, 下一个链接会被拒绝直接链接到第二个打开的nc上问题:
本人使用的是winsock2, 
listen(sock,X)
x代表的的是客户端数量, 本人测试的数据
0或1: 会接受两个链接, 第三个链接会被拒绝
-1: 会接受多个链接 我对nc的源代码进行了检查, 
他使用的代码是winsock1的库, 他的listen也是1, 不过使用的是wsock32.dll的库
我之后把套接字服务器的代码从winsock2库转换成了wsock32库1.1, 结果依旧... 还是能接受两个!!----------
同样的代码, 不一样的结果
为什么 到底要怎么办 本人代码:
注- 出了里面的printf函数是自己写的, 功能和writeln一样...procedure Listen(Port: integer);
var
  Socket: TSocket;
  SockAddrIn: TSockAddrIn;
var
  wsadata: TWSAData;
  SockAddr: TSockAddr;
  FReUseAddr: Boolean;
  Size: integer;
  APeerConnection: TClientSocket;
  S: string;
begin
  WSAStartup(MakeWord(1, 1), wsadata);  Socket := Winsock.Socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
  if Socket = INVALID_SOCKET then Exit;  SockAddrIn.sin_family := AF_INET;
  SockAddrIn.sin_addr.s_addr := INADDR_ANY;
  SockAddrIn.sin_port := hTons(Port);  // 端口重绑定 (端口复用)  - 默认不开启
  FReUseAddr := True;
  SetSockOpt(Socket, SOL_S0CKET, SO_REUSEADDR, @FReUseAddr, SizeOf(FReUseAddr));  // 绑定
  if Bind(Socket, SockAddrIn, sizeof(SockAddrIn)) = SOCKET_ERROR then
  begin
    Printf('Bind Error:' + LastError, $C);
    Exit;
  end;  // 核心代码 -1则多,  0,1则有2
  if Winsock.listen(Socket, 1) = SOCKET_ERROR then
  begin
    RaiseLastErrorFmt('listen Error', 'listen');
  end;  PrintfFmt('NTD Server Listen on Port %d', [Port], $A);  Sleep(5000000);winsock listen 数量winsocklisten服务器