1.客戶端代碼
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.Net.Sockets; using System.Threading; namespace ClientSocket { class Program { private static byte[] result = new byte[1024]; static void Main(string[] args) { //設定服務器IP地址 IPAddress ip = IPAddress.Parse("127.0.0.1"); Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); try { clientSocket.Connect(new IPEndPoint(ip, 8885)); //配置服務器IP與端口 Console.WriteLine("連接服務器成功"); } catch { Console.WriteLine("連接服務器失敗,請按回車鍵退出!"); return; } for (int i = 0; i < 10; i++) { try { Thread.Sleep(1000); //等待1秒鐘 string sendMessage = "client send Message Hellp" + DateTime.Now; clientSocket.Send(Encoding.ASCII.GetBytes(sendMessage)); Console.WriteLine("向服務器發送消息:{0}" + sendMessage); } catch { clientSocket.Shutdown(SocketShutdown.Both); clientSocket.Close(); break; } } Console.WriteLine("發送完畢,按回車鍵退出"); Console.ReadLine(); } } }2.服務端代碼
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net.Sockets; using System.Net; using System.Threading; using LogHelper; using System.IO; using System.Diagnostics; namespace SocketForm { class SocketConnection { private int port;//監聽端口號 private static byte[] result = new byte[1024]; private static Socket server;//服務器Socket private IPAddress ip;//Ip地址 private static Socket client;//客戶端Socket private static Thread myThread;//啓動監聽線程 private static Thread receiveThread;//接收數據線程 public SocketConnection(string ipadr,int port) { this.port = port;//初始化端口 ip = IPAddress.Parse(ipadr);//初始化ip地址 } public void setConnection() { server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//實例化socket對象(採用網絡流傳輸方式,TCP協議傳輸) server.Bind(new IPEndPoint(ip, port));//綁定ip及端口 Console.WriteLine("綁定端口ip"+this.ip+":"+this.port); server.Listen(10);//監聽端口 Console.WriteLine("正在監聽IP"+this.ip+" 端口:"+this.port+"......"); Log.Errorname = "Info"; Log.CreateLogTxt("監聽Ip"+this.ip+"端口"+this.port+"......"); myThread = new Thread(ListenClientConnect); myThread.Start(); } private static void ListenClientConnect() { while (true) { client = server.Accept(); receiveThread = new Thread(ReceiveMessage); receiveThread.Start(client); } } /// <summary> /// 接收消息 /// </summary> /// <param name="clientSocket"></param> private static void ReceiveMessage(object clientSocket) { client = (Socket)clientSocket; while (true) { try { //通過clientSocket接收數據 int receiveNumber = client.Receive(result);//獲取接收數據的長度 StreamWriter resultMessage = new StreamWriter("out.txt", true);//輸出流實例化 resultMessage.WriteLine("接收客戶端{0}消息{1}", client.RemoteEndPoint.ToString(), Encoding.ASCII.GetString(result, 0, receiveNumber)); resultMessage.Close(); Log.Errorname = "Info"; Log.CreateLogTxt("信息獲取成功"); Console.WriteLine("信息獲取成功"); } catch (Exception ex) { Log.Errorname = "ERROR"; Log.CreateLogTxt("從服務器獲取數據錯誤"+"錯誤信息"+ex.Message); Console.WriteLine("從服務器獲取數據錯誤" + "錯誤信息" + ex.Message); client.Shutdown(SocketShutdown.Both); client.Close(); break; } } } } }