简单的C# Socket编程
2015-02-17 20:16
204 查看
只是一个简单的示例。
Server,服务器代码。
使用Socket套接字连接。
Client,客户端程序,在文本框中输入字符,将在列表框显示。
Server,服务器代码。
使用Socket套接字连接。
using System; 2using System.Net; 3using System.Net.Sockets; 4using System.IO ; 5 6public class Echoserver 7{ 8 //entry point of main method. 9 public static void Main() 10 { 11 //TcpListener is listening on the given port 12 Int32 port = 1234; 13 14 //IPAddress is connetct ip address 15 //IPAddress addr = IPAddress.Parse("127.0.0.1"); 16 IPAddress ipAddress = Dns.Resolve("localhost").AddressList[0]; 17 18 TcpListener tcpListener = new TcpListener(ipAddress,port); 19 tcpListener.Start(); 20 Console.WriteLine("Server Started") ; 21 //Accepts a new connection 22 Socket socketForClient = tcpListener.AcceptSocket(); 23 //StreamWriter and StreamReader Classes for reading and writing the data to and from. 24 //The server reads the meassage sent by the Client ,converts it to upper case and sends it back to the client. 25 //Lastly close all the streams. 26 try 27 { 28 if (socketForClient.Connected) 29 { 30 while(true) 31 { 32 Console.WriteLine("Client connected"); 33 NetworkStream networkStream = new NetworkStream(socketForClient); 34 StreamWriter streamWriter = new StreamWriter(networkStream); 35 StreamReader streamReader = new StreamReader(networkStream); 36 string line = streamReader.ReadLine(); 37 Console.WriteLine("Read:" +line); 38 line=line.ToUpper()+ "!"; 39 streamWriter.WriteLine(line); 40 Console.WriteLine("Wrote:"+line); 41 streamWriter.Flush() ; 42 } 43 } 44 socketForClient.Close(); 45 Console.WriteLine("Exiting"); 46 } 47 catch(Exception e) 48 { 49 Console.WriteLine(e.ToString()) ; 50 } 51 } 52}
Client,客户端程序,在文本框中输入字符,将在列表框显示。
using System; 2using System.Text; 3using System.Drawing; 4using System.Collections; 5using System.ComponentModel; 6using System.Windows.Forms; 7using System.Net; 8using System.Net.Sockets; 9using System.IO; 10 11namespace SocketSample 12{ 13 public class Sample : System.Windows.Forms.Form 14 { 15 private System.Windows.Forms.Button btS; 16 private System.Windows.Forms.TextBox t1; 17 private NetworkStream networkStream ; 18 private StreamReader streamReader ; 19 private StreamWriter streamWriter ; 20 ArrayList sb; 21 TcpClient myclient; 22 bool flag=false; 23 private System.Windows.Forms.ListBox t2; 24 25 private System.ComponentModel.Container components = null; 26 27 public Sample() 28 { 29 sb = new ArrayList(); 30 InitializeComponent(); 31 if(!flag) 32 Connect(); 33 34 //get a Network stream from the server 35 networkStream = myclient.GetStream(); 36 streamReader = new StreamReader(networkStream); 37 streamWriter = new StreamWriter(networkStream); 38 ShowMessage(); 39 } 40 41 protected override void Dispose( bool disposing ) 42 { 43 if( disposing ) 44 { 45 if(components != null) 46 { 47 components.Dispose(); 48 } 49 } 50 base.Dispose( disposing ); 51 } 52 53 #region Windows 窗体设计器生成的代码 54 /// <summary> 55 /// 设计器支持所需的方法 - 不要使用代码编辑器修改 56 /// 此方法的内容。 57 /// </summary> 58 private void InitializeComponent() 59 { 60 System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(Sample)); 61 this.t1 = new System.Windows.Forms.TextBox(); 62 this.btS = new System.Windows.Forms.Button(); 63 this.t2 = new System.Windows.Forms.ListBox(); 64 this.SuspendLayout(); 65 // 66 // t1 67 // 68 this.t1.Location = new System.Drawing.Point(24, 32); 69 this.t1.Name = "t1"; 70 this.t1.Size = new System.Drawing.Size(280, 21); 71 this.t1.TabIndex = 0; 72 this.t1.Text = ""; 73 this.t1.TextChanged += new System.EventHandler(this.t1_TextChanged); 74 // 75 // btS 76 // 77 this.btS.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("btS.BackgroundImage"))); 78 this.btS.Enabled = false; 79 this.btS.FlatStyle = System.Windows.Forms.FlatStyle.Popup; 80 this.btS.Location = new System.Drawing.Point(320, 32); 81 this.btS.Name = "btS"; 82 this.btS.TabIndex = 1; 83 this.btS.Text = "Send"; 84 this.btS.Click += new System.EventHandler(this.btS_Click); 85 // 86 // t2 87 // 88 this.t2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; 89 this.t2.Font = new System.Drawing.Font("Courier New", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0))); 90 this.t2.ItemHeight = 15; 91 this.t2.Location = new System.Drawing.Point(24, 64); 92 this.t2.Name = "t2"; 93 this.t2.Size = new System.Drawing.Size(368, 212); 94 this.t2.TabIndex = 2; 95 // 96 // Sample 97 // 98 this.AutoScaleBaseSize = new System.Drawing.Size(6, 14); 99 this.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("$this.BackgroundImage"))); 100 this.ClientSize = new System.Drawing.Size(416, 297); 101 this.Controls.Add(this.t2); 102 this.Controls.Add(this.btS); 103 this.Controls.Add(this.t1); 104 this.Name = "Sample"; 105 this.Text = "Sample"; 106 this.ResumeLayout(false); 107 108 } 109 #endregion 110 111 public static void Main() 112 { 113 Sample df=new Sample(); 114 df.FormBorderStyle=FormBorderStyle.Fixed3D; 115 Application.Run(df); 116 } 117 118 protected void Connect() 119 { 120 //connect to the "localhost" at the give port 121 //if you have some other server name then you can use that instead of "localhost" 122 123 try 124 { 125 sb.Add("Conneting to Server"); 126 myclient = new TcpClient("localhost", 1234); 127 sb.Add("Conneted,Please enter something in the textbox"); 128 } 129 catch 130 { 131 sb.Add(string.Format("Failed to connect to server at {0}:1234", "localhost")); 132 } 133 flag = true; 134 } 135 136 protected void ShowMessage() 137 { 138 for(int i=0;i<sb.Count;i++) 139 { 140 t2.Items.Add((object)sb[i].ToString()); 141 } 142 sb.Clear(); 143 } 144 145 private void t1_TextChanged(object sender, System.EventArgs e) 146 { 147 if(t1.Text == "" ) 148 btS.Enabled = false; 149 else 150 btS.Enabled=true; 151 } 152 153 private void btS_Click(object sender, System.EventArgs e) 154 { 155 if(t1.Text=="") 156 { 157 sb.Add( "Please enter something in the textbox."); 158 t1.Focus(); 159 return ; 160 } 161 string s; 162 try 163 { 164 streamWriter.WriteLine(t1.Text); 165 Console.WriteLine("Sending Message"); 166 streamWriter.Flush(); 167 s= streamReader.ReadLine(); 168 Console.WriteLine("Reading Message") ; 169 Console.WriteLine(s) ; 170 sb.Add(s); 171 t1.Text = ""; 172 t1.Focus(); 173 ShowMessage(); 174 } 175 catch 176 { 177 MessageBox.Show("Error."); 178 } 179 } 180 } 181}
相关文章推荐
- 简单的C#Socket编程
- c# WINFORM SOCKET编程-简单聊天程序(客户端)
- socket编程的c#简单实现
- C#套接字Socket编程之最简单通信
- C# socket编程实践——支持广播的简单socket服务器
- c# WINFORM SOCKET编程-简单聊天程序(服务端)(转载)
- C# socket编程实践——简单聊天室
- C# socket编程实践——支持广播的简单socket服务器
- 网络编程C#篇(二):Socket无连接简单实例 推荐
- c# WINFORM SOCKET编程-简单聊天程序(服务端)
- C# socket编程实践——简单聊天室
- 简单的C# Socket编程
- C# Socket编程 一个简单的Socket 客户端服务器通信架构
- C#版 Socket编程(最简单的Socket通信功能)
- C# socket编程实践——支持广播的简单socket服务器
- C#版 Socket编程(最简单的Socket通信功能)
- 简单的C# Socket编程(2)
- 简单的C# Socket编程(2)
- c#基于socket编程实现简单多人聊天程序
- 网络编程C#篇(二):Socket面向连接简单实例