有两种方案
1、设一台服务器,所有的机器的通讯都通过服务器转发,这个很好作,你应该知道。
2、第个应该程序里有一组tSocktServer和tsocketClient,进行动态分配,解决多机器之间的两两通讯问题。

解决方案 »

  1.   

    tnmudp控件支持多点通讯
    下面代码可取的ip
    function LocalIP:string;
    type
        TaPInAddr = array [0..10] of PInAddr;
        PaPInAddr = ^TaPInAddr;
    var
        phe  : PHostEnt;
        pptr : PaPInAddr;
        Buffer : array [0..63] of char;
        I    : Integer;
        GInitData      : TWSADATA;begin
        WSAStartup($101, GInitData);
        Result := '';
        GetHostName(Buffer, SizeOf(Buffer));
        phe :=GetHostByName(buffer);
        if phe = nil then Exit;
        pptr := PaPInAddr(Phe^.h_addr_list);
        I := 0;
        while pptr^[I] <> nil do begin
          result:=StrPas(inet_ntoa(pptr^[I]^));
          Inc(I);
        end;
        WSACleanup;
    end;
      

  2.   

    cutelocust:udp的不稳定,而且不要回音的,所以会造成假如网络忙得话,会话会自动丢失。你的函数我在调用的时候,运行时会出现系统冲突,冲突地址是000000,不知道是什么原因,愿闻其祥。
      

  3.   

    netlib:
    您的一方案:是无法做到并发的可能的,假如两个client一起打开端口就会出错。
    2方案我想在一个程序中socket的server和client个数是很多了,好像不好。
    我想可不可以1+2=3并发时将生成新的server和client