socket局域网编程有关问题

socket局域网编程问题
socket编程是一个服务端,一个客户端或多个客户端的通讯。
我现在想做一个没有服务端的,都是客户端的通讯,就像 飞鸽传书,cs游戏一样,
多台电脑在同一局域网下,让他们自己随意连接其他电脑,求大神帮忙,给个思路。
如果我的想法有问题,求大神给个正确的思路,
------解决思路----------------------
  客户登陆的时候在局域网中发送广播消息,广播消息中有自己的网络信息,局域网里的其他用户收到广播消息后根据广播中的网络消息回包,然后就可以正常痛心了。
------解决思路----------------------
多播或者组播,得到IP和PORT以后互联~
------解决思路----------------------
所有客户端都也都是服务端(可以主动发起连接, 也一直等待连接)
广播得到其他客户端列表
想通信时, 在列表中选一个, 发送消息

------解决思路----------------------
这个关键就在于各个客户端之间要知道彼此的IP,所以可以在客户端启动时使用UDP发广播,把自己的IP通过广播的方式让此网段的客户端都得到这个通知,其它客户端得到IP后可以把自己的IP发送给刚启动的客户端。反之当客户端退出时也发起一个广播,通知其它客户端自己退出了。就是每个客户端都维护一个当前存在于网络其它客户端的IP列表。
之后通信是使用udp还是tcp就随意了。