2 ilovemyfamily jiejie ILOVEMYFAMILY_jiejie 于 2014.12.08 14:05 提问

html5 websocket在线聊天

用html5 websocket 做的聊天室,怎么设置让客户端在知道服务器端的ip情况下,还是连不上呀!也就是说怎么对客户端进行身份验证?

2个回答

showbo
showbo   Ds   Rxr 2014.12.08 15:52
已采纳

楼主下的是http://www.ibm.com/developerworks/cn/web/1112_huangxa_websocket/这个地址的示例?如果是修改WebSocketsServer.cs这个文件里面的代码,增加客户端ip地址的判断,主要是获取客户端ip地址,然后判断ip是否允许连接

            while (true)
            {
                Socket sc = Listener.Accept();
                if (sc != null)
                {
                    IPEndPoint cip = (IPEndPoint)sc.RemoteEndPoint;
                    string ipaddr = cip.Address.ToString();

                    if (ipaddr == "192.168.1.68")//这里改为你的其他判断,如读数据库中存在的ip地址对比什么的,在禁止ip列表里面就关闭连接
                        sc.Close();
                    else
                    {
                        System.Threading.Thread.Sleep(100);
                        SocketConnection socketConn = new SocketConnection();
                        socketConn.ConnectionSocket = sc;
                        socketConn.NewConnection += new NewConnectionEventHandler(socketConn_NewConnection);
                        socketConn.DataReceived += new DataReceivedEventHandler(socketConn_BroadcastMessage);
                        socketConn.Disconnected += new DisconnectedEventHandler(socketConn_Disconnected);

                        socketConn.ConnectionSocket.BeginReceive(socketConn.receivedDataBuffer,
                                                                 0, socketConn.receivedDataBuffer.Length,
                                                                 0, new AsyncCallback(socketConn.ManageHandshake),
                                                                 socketConn.ConnectionSocket.Available);
                        connectionSocketList.Add(socketConn);

                    }
                }
            }
showbo
showbo 回复ILOVEMYFAMILY_jiejie: 楼主要好学下socket编程。。socketConn.ConnectionSocket.BeginReceive通过这个来接收,具体看SocketConnection这个类里面的相关代码
3 年多之前 回复
ILOVEMYFAMILY_jiejie
ILOVEMYFAMILY_jiejie 就是这个代码,客户端向服务器传过来的是什么呀?我怎么都调不出来呀!
3 年多之前 回复
xuzuning
xuzuning   Ds   Rxr 2014.12.08 15:13

身份验证是主动的,也就是应该有一个登录界面,提交成功后方可进入

xuzuning
xuzuning 回复ILOVEMYFAMILY_jiejie: 用户登录你不会写吗?(这个和是否是聊天室可是没什么关系的哟)
3 年多之前 回复
ILOVEMYFAMILY_jiejie
ILOVEMYFAMILY_jiejie 怎么在服务器端设置黑名单呀!
3 年多之前 回复
xuzuning
xuzuning 回复ILOVEMYFAMILY_jiejie: 你不想让某些用户登录?那就在服务端设黑名单就是了
3 年多之前 回复
ILOVEMYFAMILY_jiejie
ILOVEMYFAMILY_jiejie 能不能加一个验证方法,去验证一下,就算客户端知道了服务器端的ip也不能让他登录进去呢?
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!