设为首页 加入收藏

TOP

【C#】 Socket通讯客户端程序(一)
2014-11-24 14:34:32 来源: 作者: 【 】 浏览:1
Tags:Socket 通讯 客户端 程序

这段时间一直在优化Socket通讯这块,经常和Socket打交道,现在分享给大家一个小的案例,


代码如下:


byte[] m_dataBuffer = new byte [10];
IAsyncResult m_result;
public AsyncCallback m_pfnCallBack ;
private System.Windows.Forms.Button btnClear;
public Socket m_clientSocket;


//关闭连接


void ButtonCloseClick(object sender, System.EventArgs e)
{
if ( m_clientSocket != null )
{
m_clientSocket.Close ();
m_clientSocket = null;
}
Close();
}


//连接服务器


void ButtonConnectClick(object sender, System.EventArgs e)
{
// See if we have text on the IP and Port text fields
if(textBoxIP.Text == "" || textBoxPort.Text == ""){
MessageBox.Show("IP Address and Port Number are required to connect to the Server\n");
return;
}
try
{
UpdateControls(false);
// Create the socket instance
m_clientSocket = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp );

// Cet the remote IP address
IPAddress ip = IPAddress.Parse (textBoxIP.Text);
int iPortNo = System.Convert.ToInt16 ( textBoxPort.Text);
// Create the end point
IPEndPoint ipEnd = new IPEndPoint (ip,iPortNo);
// Connect to the remote host
m_clientSocket.Connect ( ipEnd );
if(m_clientSocket.Connected) {

UpdateControls(true);
//Wait for data asynchronously
WaitForData();
}
}
catch(SocketException se)
{
string str;
str = "\nConnection failed, is the server running \n" + se.Message;
MessageBox.Show (str);
UpdateControls(false);
}
}


//发送消息


void ButtonSendMessageClick(object sender, System.EventArgs e)
{
try
{
string msg = richTextTxMessage.Text;
// New code to send strings
NetworkStream networkStream = new NetworkStream(m_clientSocket);
System.IO.StreamWriter streamWriter = new System.IO.StreamWriter(networkStream);
streamWriter.WriteLine(msg);
streamWriter.Flush();


}
catch(SocketException se)
{
MessageBox.Show (se.Message );
}
}


//等待接收数据


public void WaitForData()
{
try
{
if ( m_pfnCallBack == null )
{
m_pfnCallBack = new AsyncCallback (OnDataReceived);
}
SocketPacket theSocPkt = new SocketPacket ();
theSocPkt.thisSocket = m_clientSocket;
// Start listening to the data asynchronously
m_result = m_clientSocket.BeginReceive (theSocPkt.dataBuffer,
0, theSocPkt.dataBuffer.Length,
SocketFlags.None,
m_pfnCallBack,
theSocPkt);
}
catch(SocketException se)
{
MessageBox.Show (se.Messag

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C# 邮件发送方法【NetMail方式】 下一篇AMF序列化为对象和AMF序列化为二..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: