日期:2014-05-17  浏览次数:20808 次

求助 套接字问题
我是学.net的新手,现在遇到了点问题 ,就是套接字的 多个客户端怎样给服务端发送信息 ,服务端是循环接收客户端的连接请求的,现在多个客户端连上后 只能一个客户端给服务端发送。高人请帮助 ,谢谢
.net

------解决方案--------------------
服务器socket listen后,accept会生成1个新的连接,每次你都把这个连接给新的对象,就有多个连接,就可以同时接收多个客户端的发送了。
------解决方案--------------------
服务器端的一个代码例子,包括接收客户端以及接收数据

    /// <summary>
    /// 收包处理委托
    /// </summary>
    /// <param name="buffer"></param>
    /// <param name="socket"></param>
    /// <returns></returns>
    public delegate bool ReceivePacketHandle(byte[] buffer, Socket socket);

    /// <summary>
    /// 客户端接受委托
    /// </summary>
    public delegate void ClientChangedHandle(object state); 

    public abstract class PacketTransferBase
    {
        /// <summary>
        /// Socket列表
        /// </summary>
        public SortedList<int, Socket> SocketClientList { get; private set; }

        /// <summary>
        /// 客户端接收事件
        /// </summary>
        public event ClientChangedHandle OnClientAccepted;

        /// <summary>
        /// 客户端关闭事件
        /// </summary>
        public event ClientChangedHandle OnClientClosed;

        /// <summary>
        /// 收包处理事件
        /// </summary>
        public event ReceivePacketHandle OnReceivePacket;

        public PacketTransferBase()
        {
            SocketClientList = new SortedList<int, Socket>();           
        }

        /// <summary>
        /// 保存客户端,以待每次接收后进行判断等功能
        /// </summary>
        /// <param name="socketClient"></param>
        protected void AddClient(Socket socketClient)
        {
            lock (SocketClientList)
    &