Socket基本编程.docx

上传人:b****9 文档编号:23345054 上传时间:2023-05-16 格式:DOCX 页数:11 大小:17.07KB
下载 相关 举报
Socket基本编程.docx_第1页
第1页 / 共11页
Socket基本编程.docx_第2页
第2页 / 共11页
Socket基本编程.docx_第3页
第3页 / 共11页
Socket基本编程.docx_第4页
第4页 / 共11页
Socket基本编程.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

Socket基本编程.docx

《Socket基本编程.docx》由会员分享,可在线阅读,更多相关《Socket基本编程.docx(11页珍藏版)》请在冰豆网上搜索。

Socket基本编程.docx

Socket基本编程

//Socket基本编程

//服务端:

usingSystem.Net;..

usingSystem.Net.Sockets;

usingSystem.Text;.

usingSystem.Threading;

Threadmythread;

Socketsocket;

//清理任何正在使用的资源。

protectedoverridevoidDispose(booldisposing)

{

try.

 {    socket.Close();//释放资源.

  mythread.Abort();//中止线程

 }.

 catch{}..

if(disposing)!

{

if(components!

=null).

{

components.Dispose();

}。

}...

base.Dispose(disposing);

}.

publicstaticIPAddressGetServerIP()...

{.

IPHostEntryieh=Dns.GetHostByName(Dns.GetHostName());

returnieh.AddressList[0];.

}...

privatevoidBeginListen(). 

{

IPAddressServerIp=GetServerIP();...

IPEndPointiep=newIPEndPoint(ServerIp,8000);...

socket=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);

.

byte[]byteMessage=newbyte[100];.

this.label1.Text=iep.ToString();

socket.Bind(iep);..

//do。

while(true)

{!

try..

{。

socket.Listen(5);.

SocketnewSocket=socket.Accept();

newSocket.Receive(byteMessage);

stringsTime=DateTime.Now.ToShortTimeString();!

stringmsg=sTime":

""Messagefrom:

";

msg=newSocket.RemoteEndPoint.ToString()Encoding.Default.GetString(byteMessage);!

this.listBox1.Items.Add(msg);}!

catch(SocketExceptionex).

{

this.label1.Text=ex.ToString();.

}

}.

//while(byteMessage!

=null);..

}.

//开始监听

privatevoidbutton1_Click(objectsender,System.EventArgse).

{..

try

{. 

mythread=newThread(newThreadStart(BeginListen));

mythread.Start();.

}。

catch(System.Exceptioner).

{

MessageBox.Show(er.Message,"完成",MessageBoxButtons.OK,MessageBoxIcon.Stop);..

}

}..

.

//客户端:

..

usingSystem.Net;

usingSystem.Net.Sockets;

usingSystem.Text;.

.

privatevoidbutton1_Click(objectsender,System.EventArgse)..

{..

BeginSend();

}

privatevoidBeginSend()

{.

stringip=this.txtip.Text;.

stringport=this.txtport.Text;. 

IPAddressserverIp=IPAddress.Parse(ip);..

intserverPort=Convert.ToInt32(port);

IPEndPointiep=newIPEndPoint(serverIp,serverPort);!

byte[]byteMessage;.

//do//{

Socketsocket=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);

socket.Connect(iep);.

byteMessage=Encoding.ASCII.GetBytes(textBox1.Text);

socket.Send(byteMessage);.

socket.Shutdown(SocketShutdown.Both);

socket.Close();.

//}..

//while(byteMessage!

=null);.

}!

..

TCP协议的接收端

usingSystem.Net.Sockets;//使用到TcpListen类!

usingSystem.Threading;//使用到线程。

usingSystem.IO;//使用到StreamReader类..

intport=8000;//定义侦听端口号!

privateThreadthThreadRead;//创建线程,用以侦听端口号,接收信息.

privateTcpListenertlTcpListen;//侦听端口号..

privateboolblistener=true;//设定标示位,判断侦听状态

privateNetworkStreamnsStream;//创建接收的基本数据流.

privateStreamReadersrRead;.

privateSystem.Windows.Forms.StatusBarstatusBar1;..

privateSystem.Windows.Forms.Buttonbutton1;privateSystem.Windows.Forms.ListBoxlistBox1;//从网络基础数据流中读取数据.

privateTcpClienttcClient;.

privatevoidListen().

{try!

{.

tlTcpListen=newTcpListener(port);//以8000端口号来初始化TcpListener实例.

tlTcpListen.Start();//开始监听.

statusBar1.Text="正在监听";

tcClient=tlTcpListen.AcceptTcpClient();//通过TCP连接请求

nsStream=tcClient.GetStream();//获取用以发送、接收数据的网络基础数据流.

srRead=newStreamReader(nsStream);//以得到的网络基础数据流来初始化StreamReader实例。

statusBar1.Text="已连接!

";

版权申明:

本站文章均来自网络.

while(blistener)//循环侦听

{

stringsMessage=srRead.ReadLine();//从网络基础数据流中读取一行数据..

if(sMessage=="STOP")//判断是否为断开TCP连接控制码.

{tlTcpListen.Stop();//关闭侦听。

nsStream.Close();//释放资源srRead.Close();. 

statusBar1.Text="连接已关闭!

";

thThreadRead.Abort();//中止线程.

return;

}

stringsTime=DateTime.Now.ToShortTimeString();//获取接收数据时的时间...

listBox1.Items.Add(sTime""sMessage);. 

}!

}.

catch(System.Security.SecurityException)..

{

MessageBox.Show("侦听失败!

","错误");

}.

}!

//开始监听。

privatevoidbutton1_Click(objectsender,System.EventArgse)

{

thThreadRead=newThread(newThreadStart(Listen));.

thThreadRead.Start();//启动线程...

button1.Enabled=false;

}

//清理任何正在使用的资源。

protectedoverridevoidDispose(booldisposing){.

try.

{.

tlTcpListen.Stop();//关闭侦听!

nsStream.Close();!

srRead.Close();//释放资源.

thThreadRead.Abort();//中止线程.

}catch{}

.

if(disposing)..

{。

if(components!

=null)

{。

components.Dispose();}

}base.Dispose(disposing);.

}。

TCP协议的发送端..

usingSystem.Net.Sockets;//使用到TcpListen类!

usingSystem.Threading;//使用到线程.

usingSystem.IO;//使用到StreamWriter类...

usingSystem.Net;//使用IPAddress类、IPHostEntry类等!

. 

privateStreamWriterswWriter;//用以向网络基础数据流传送数据 privateNetworkStreamnsStream;//创建发送数据的网络基础数据流 

privateTcpClienttcpClient;

privateSystem.Windows.Forms.Buttonbutton1;

privateSystem.Windows.Forms.TextBoxtextBox1;。

privateSystem.Windows.Forms.Buttonbutton2;..

privateSystem.Windows.Forms.TextBoxtextBox2;.

privateSystem.Windows.Forms.StatusBarstatusBar1;

privateSystem.Windows.Forms.Labellabel1;privateSystem.Windows.Forms.Labellabel2;//通过他实现向远程主机提出TCP连接申请 privatebooltcpConnect=false;//定义标识符,用以表示TCP连接是否建立。

//连接 

privatevoidbutton1_Click(objectsender,System.EventArgse)。

{.

IPAddressipRemote;

try。

{.

ipRemote=IPAddress.Parse(textBox1.Text);..

}

catch//判断给定的IP地址的合法性.

{..

MessageBox.Show("输入的IP地址不合法!

","错误提示!

");

return;.

}.

..

IPHostEntryipHost;.

try..

{!

ipHost=Dns.Resolve(textBox1.Text); 

}!

catch//判断IP地址对应主机是否在线..

{.

MessageBox.Show("远程主机不在线!

","错误提示!

");.

return;..

}.

..

stringsHostName=ipHost.HostName;try..

{.

TcpClienttcpClient=newTcpClient(sHostName,8000);//对远程主机的8000端口提出TCP连接申请。

nsStream=tcpClient.GetStream();//通过申请,并获取传送数据的网络基础数据流  .

swWriter=newStreamWriter(nsStream);//使用获取的网络基础数据流来初始化StreamWriter实例

button1.Enabled=false;.

button2.Enabled=true;

tcpConnect=true;statusBar1.Text="已连接!

";..

}catch.

{. 

MessageBox.Show("无法和远程主机8000端口建立连接!

","错误提示!

");. 

return;!

}.

}. 

//发送.

privatevoidbutton2_Click(objectsender,System.EventArgse){

if(textBox2.Text!

="")

{

swWriter.WriteLine(textBox2.Text);//刷新当前数据流中的数据。

swWriter.Flush();.

}else.

{...

MessageBox.Show("发送信息不能为空!

","错误提示!

");.

}.

}. 

//清理任何正在使用的资源。

protectedoverridevoidDispose(booldisposing)..

{.

if(tcpConnect){swWriter.WriteLine("STOP");//发送控制码  

swWriter.Flush();//刷新当前数据流中的数据  

nsStream.Close();//清除资源.

swWriter.Close();

}.

if(disposing)!

{

if(components!

=null)..

{components.Dispose();..

}}base.Dispose(disposing);...

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 电大

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1