資源描述:
《網(wǎng)絡聊天工具socket編程心得》由會員上傳分享,免費在線閱讀,更多相關內容在應用文檔-天天文庫。
1、網(wǎng)絡聊天工具Socket編程心得首先要了解TCP協(xié)議通信的流程:1。服務器端首先創(chuàng)建服務器套接字2。服務器套接字監(jiān)聽一個端口,等待客戶端的請求3。客戶端創(chuàng)建一個客戶端套接字4。客戶端向服務器發(fā)送請求5。服務器確認與客戶端的連接6。客戶端和服務器利用建立的連接進行通信7。通信完畢后,客戶端和服務器關閉各自的連接Socket編程基礎:一。利用Socket建立服務器程序1。創(chuàng)建一個服務器套接字,用IP地址和端口初始化服務器IPAddressipAddress=IPAddress.Parse("127.0.0.1");TcpListenerlistener=newTcpListener(ipAddr
2、ess,1234);2。監(jiān)聽服務器端口listener.Start();3。確認與客戶端的連接Socketsocket=listener.AcceptSocket();4。取得客戶端傳送過來的信息//將傳送過來的信息存入字節(jié)數(shù)組中byte[]buffer=newbyte[1024];socket.Receive(buffer);5。處理客戶端的請求并回應客戶端stringmessage="hello";byte[]outbytes=System.Text.Encoding.ASCII.GetBytes(message.ToCharArray());socket.Send(outbytes,m
3、essage.Length,0);6。斷開客戶端的連接,釋放客戶端連接socket.Close();7。關閉服務器,釋放服務器連接listener.Close();二。利用Socket建立客戶端程序1。創(chuàng)建客戶端套接字TcpClienttcpClient=newTcpClient();2。連接服務器tcpClient.Connect(IPAddress.Parse("127.0.0.1"),1234);3。得到與服務器通信的流通道NetworkStreamstream=tcpClient.GetStream();4。向服務器發(fā)送數(shù)據(jù)stringcmd="";byte[]outbytes=Sy
4、stem.Text.Encoding.ASCII.GetBytes(cmd.ToCharArray());stream.Write(outbytes,0,outbytes.Length);5。接收從服務器發(fā)回的數(shù)據(jù)byte[]buffer=newbyte[1024];intlen=stream.Read(buffer,0,buffer.Length);stringmsg=System.Text.Encoding.ASCII.GetString(buffer,0,len);6。斷開連接tcpClient.Close();服務器端窗體ChatServer.cs:usingSystem;using
5、System.Drawing;usingSystem.Collections;usingSystem.ComponentModel;usingSystem.Windows.Forms;usingSystem.Data;usingSystem.Net;usingSystem.Net.Sockets;usingSystem.Threading;namespaceChatServer{//////Form1的摘要說明。///publicclassChatServerForm:System.Windows.Forms.Form{//////必需
6、的設計器變量。///privateSystem.ComponentModel.Containercomponents=null;//Theportstaticintport=1234;privateTcpListenerlistener;privateSockettmpSocket;//ThemaximalclientstheservercanholdstaticintMaxNum=100;privateSystem.Windows.Forms.Labellabel1;privateSystem.Windows.Forms.Labellabel2;privateSyste
7、m.Windows.Forms.TextBoxtxtHost;privateSystem.Windows.Forms.TextBoxtxtPort;privateSystem.Windows.Forms.ButtonbtnStart;privateSystem.Windows.Forms.ButtonbtnExit;privateSystem.Windows.Forms.Labellabel3;private