Socket服务器与客户端双向通信实例

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Socket服务器与客户端双向通信实例

using System;

using System.Collections.Generic;

using ponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using ;

using .Sockets;//添加命名空间

using System.Threading;//添加命名空间

namespace WFAsynSocket

{

public partial class Form1 : Form

{

Thread LisThread;

Socket LisSocket;

Socket newSocket;

EndPoint point;

string strmes = String.Empty;

int port = 8000;//定义侦听端口号

public Form1()

{

InitializeComponent();

}

private void btn_Listen_Click(object sender, EventArgs e)

{

LisThread = new Thread(new ThreadStart(BeginListern));//开线程执行BeginListern方法

LisThread.Start();//线程开始执行

}

public IPAddress GetIP()

{ /*获取本地服务器的ip地址 */

IPHostEntry iep = Dns.GetHostEntry(Dns.GetHostName());

IPAddress ip = iep.AddressList[0];

return ip;

}

public void BeginListern()

{

LisSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, Proto colType.Tcp);//实例化Socket

IPAddress ServerIp = GetIP();/*获取本地服务器的ip地址 */

IPEndPoint iep = new IPEndPoint(ServerIp, port);

LisSocket.Bind(iep); /*将Socket绑定ip */

toolStripStatusLabel1.Text = iep.ToString() + "正在监听";

LisSocket.Listen(50); //Socket开始监听

newSocket = LisSocket.Accept();//获取连接请求的Socket

/*接收客户端Socket所发的信息 */

while (true)

{

try

{

byte[] byteMessage = new byte[100];

newSocket.Receive(byteMessage);//接收信息

MessageBox.Show(Encoding.Default.GetString(byteMessage));

Control.CheckForIllegalCrossThreadCalls = false;

point = newSocket.RemoteEndPoint;//获取客户端的Socket的相关信息 IPEndPoint IPpoint = (IPEndPoint)point;

strmes+=IPpoint.Address.ToString()+ " " +DateTime.Now.ToString()+"说"+Encoding.Default.GetString(byteMessage).Trim(new char[] { '\0' })+"\r\n";

this.richTextBox1.Text=strmes;

}

catch (SocketException ex)

{

toolStripStatusLabel1.Text += ex.ToString();

}

}

}

private void btn_Cancel_Click(object sender, EventArgs e)

{

try

{

LisSocket.Close();//关闭Socket

LisThread.Abort();//线程停止

LisThread=null;

}

catch (Exception ex)

{

MessageBox.Show(ex.Message);

}

finally

{

Application.Exit();

}

}

private void btn_Send_Click(object sender, EventArgs e)

{

byte[] byteData = Encoding.Default.GetBytes(this.richTextBox2.Text); newSocket.Send(byteData);//发送信息即由服务器往客户端上发信息

}

}

}

点击开始监听按钮之后

客户端则只要使用Socket去连接到服务器端的Socket就可实现往服务器上发信息using System;

using System.Collections.Generic;

using ponentModel;

using System.Data;

相关文档
最新文档