欢迎来到天天文库
浏览记录
ID:25298876
大小:52.18 KB
页数:4页
时间:2018-11-19
《[计算机]bs模式下socket即时通讯》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、//实现即时通讯的方法和变量privateintmaxPacket=512;//////用于接受消息的线程///privateThreadthread=null;//////用于接受和发送的网络流,从登录窗体得到///privateNetworkStreamnetstrm=null;//////服务器套接字的字符串形式,从登录窗体得到/////stringstrpublic=null;#region实现及时提醒//
2、////提取命令///格式为两个一位整数拼接成的字符串。///第一位为0表示客户机向服务器发送的命令,为1表示服务器向客户机发送的命令。///第二位表示命令的含义,具体如下:///"11"-服务器要求客户机更新在线列表///"12"-服务器要求客户机做闪屏振动///default-接受用户消息或者系统消息的正文//////要解析的包含命令的byte数组,只提取前两个字节///拼接成的命令privatestr
3、ingDecodingBytes(byte[]s){//连接String的一个或多个实例returnstring.Concat(s[0].ToString(),s[1].ToString());}//////接受消息的线程执行体///privatevoidReceiveMsg(){boolflag=true;while(flag){try{netstrm=(NetworkStream)Session["netstream"];byte[]packet=newbyte[maxPacket];
4、netstrm.Read(packet,0,packet.Length);stringcmd=DecodingBytes(packet);switch(cmd){///"11"-服务器要求客户机更新在线列表///default-接受用户消息或者系统消息的正文case"11":{break;}default:{stringdisplaytxt=Encoding.Unicode.GetString(packet);Session["txtMsg"]=displaytxt;//Page.ClientScript.RegisterSt
5、artupScript(GetType(),"","");break;}}}catch(SocketException){Thread.CurrentThread.Abort();}}}#endregionprotectedvoidPage_Load(objectsender,EventArgse){if(!IsPostBack){//为会话创建线程thread=newThread(newThreadStart(ReceiveMsg));thre
6、ad.Start();}}1)向操作系统注册:让操作系统将一个端口和服务器通讯进程绑定。这个端口就代表了这通讯进程。ServerSocketss=newServerSocket(port),服务端通讯进程在port端口监听。2)Socketsocket=serverSocket.accept();取出一个客户端的socket连接。如果没有客户端的连接到来,就一直等待,也就是阻塞状态3)通过socket和客户端socket通讯,怎么通讯呢?通过socket.getOutputSteam(),socket.getInputStre
7、am()进行流的传递。客户端: 1)和服务器建立连接:Socketsocket=newSocket(ip地址,port); 如果创建socket对象成功,代表连接建立。如果抛出异常,连接建 立不成功。 2)通过socket获取输入输出流对象。socket.getInputStream(),socket.getOutputStream().
此文档下载收益归作者所有