简单的C#Socket编程

发布时间:2009年06月04日      浏览次数:870 次
server,服务器代码。
使用Socket套接字连接。
using System;
using System.Net;
using System.Net.Sockets;
using System.IO ;
public class Echoserver
{
//entry point of main method.
public static void Main()
{
//TcpListener is listening on the given port
Int32 port = 1234;
//IPAddress is connetct ip address
//IPAddress addr = IPAddress.Parse("127.0.0.1");
IPAddress ipAddress = Dns.Resolve("localhost").AddressList[0];
TcpListener tcpListener = new TcpListener(ipAddress,port);
tcpListener.Start();
Console.WriteLine("Server Started") ;
//Accepts a new connection
Socket socketForClient = tcpListener.AcceptSocket();
//StreamWriter and StreamReader Classes for reading and writing the data to and from.
//The server reads the meassage sent by the Client ,converts it to upper case and sends it back to the client.
//Lastly close all the streams.
try
{
if (socketForClient.Connected)
{
while(true)
{
Console.WriteLine("Client connected");
NetworkStream networkStream = new NetworkStream(socketForClient);
StreamWriter streamWriter = new StreamWriter(networkStream);
StreamReader streamReader = new StreamReader(networkStream);
string line = streamReader.ReadLine();
Console.WriteLine("Read:" +line);
line=line.ToUpper()+ "!";
streamWriter.WriteLine(line);
Console.WriteLine("Wrote:"+line);
streamWriter.Flush() ;
}
}
socketForClient.Close();
Console.WriteLine("Exiting");
}
catch(Exception e)
{
Console.WriteLine(e.ToString()) ;
}
}
}
Client,客户端程序,在文本框中输入字符,将在列表框显示。
using System;
using System.Text;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.IO;
namespace SocketSample
{
public class Sample : System.Windows.Forms.Form
{
private System.Windows.Forms.Button btS;
private System.Windows.Forms.TextBox t1;
private NetworkStream networkStream ;
private StreamReader streamReader ;
private StreamWriter streamWriter ;
ArrayList sb;
TcpClient myclient;
bool flag=false;
private System.Windows.Forms.ListBox t2;
private System.ComponentModel.Container components = null;
public Sample()
{
sb = new ArrayList();
InitializeComponent();
if(!flag)
Connect();
//get a Network stream from the server
networkStream = myclient.GetStream();
streamReader = new StreamReader(networkStream);
streamWriter = new StreamWriter(networkStream);
ShowMessage();
}
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
Windows 窗体设计器生成的代码#region Windows 窗体设计器生成的代码
/**////
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
///
private void InitializeComponent()
{
System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(Sample));
this.t1 = new System.Windows.Forms.TextBox();
this.btS = new System.Windows.Forms.Button();
this.t2 = new System.Windows.Forms.ListBox();
this.SuspendLayout();
//
// t1
//
this.t1.Location = new System.Drawing.Point(24, 32);
this.t1.Name = "t1";
this.t1.Size = new System.Drawing.Size(280, 21);
this.t1.TabIndex = 0;
this.t1.Text = "";
this.t1.TextChanged += new System.EventHandler(this.t1_TextChanged);
//
// btS
//
this.btS.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("btS.BackgroundImage")));
this.btS.Enabled = false;
this.btS.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
this.btS.Location = new System.Drawing.Point(320, 32);
this.btS.Name = "btS";
this.btS.TabIndex = 1;
this.btS.Text = "Send";
this.btS.Click += new System.EventHandler(this.btS_Click);
//
// t2
//
this.t2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.t2.Font = new System.Drawing.Font("Courier New", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
this.t2.ItemHeight = 15;
this.t2.Location = new System.Drawing.Point(24, 64);
this.t2.Name = "t2";
this.t2.Size = new System.Drawing.Size(368, 212);
this.t2.TabIndex = 2;
//
// Sample
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("$this.BackgroundImage")));
this.ClientSize = new System.Drawing.Size(416, 297);
this.Controls.Add(this.t2);
this.Controls.Add(this.btS);
this.Controls.Add(this.t1);
this.Name = "Sample";
this.Text = "Sample";
this.ResumeLayout(false);
}
#endregion
public static void Main()
{
Sample df=new Sample();
df.FormBorderStyle=FormBorderStyle.Fixed3D;
Application.Run(df);
}
protected void Connect()
{
//connect to the "localhost" at the give port
//if you have some other server name then you can use that instead of "localhost"
try
{
sb.Add("Conneting to Server");
myclient = new TcpClient("localhost", 1234);
sb.Add("Conneted,Please enter something in the textbox");
}
catch
{
sb.Add(string.Format("Failed to connect to server at {0}:1234", "localhost"));
}
flag = true;
}
protected void ShowMessage()
{
for(int i=0;i {
t2.Items.Add((object)sb[i].ToString());
}
sb.Clear();
}
private void t1_TextChanged(object sender, System.EventArgs e)
{
if(t1.Text == "" )
btS.Enabled = false;
else
btS.Enabled=true;
}
private void btS_Click(object sender, System.EventArgs e)
{
if(t1.Text=="")
{
sb.Add( "Please enter something in the textbox.");
t1.Focus();
return ;
}
string s;
try
{
streamWriter.WriteLine(t1.Text);
Console.WriteLine("Sending Message");
streamWriter.Flush();
s= streamReader.ReadLine();
Console.WriteLine("Reading Message") ;
Console.WriteLine(s) ;
sb.Add(s);
t1.Text = "";
t1.Focus();
ShowMessage();
}
catch
{
MessageBox.Show("Error.");
}
}
}
}
免责声明:本站相关技术文章信息部分来自网络,目的主要是传播更多信息,如果您认为本站的某些信息侵犯了您的版权,请与我们联系,我们会即时妥善的处理,谢谢合作!