首页 > DotNET(C#) Socket基本编程 (1)

DotNET(C#) Socket基本编程 (1)

Socket基本编程



服务端:



using System.Net;



using System.Net.Sockets;



using System.Text;



using System.Threading;









Thread mythread ;



Socket socket;





// 清理所有正在使用的资源。



protected override void Dispose( bool disposing )



{



try



  {   



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



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



  }



  catch{ }







if( disposing )



{



if (components != null)



{



components.Dispose();



}



}



base.Dispose( disposing );



}



public static IPAddress GetServerIP()



{



IPHostEntry ieh=Dns.GetHostByName(Dns.GetHostName());



return ieh.AddressList[0];



}



private void BeginListen()



{



IPAddress ServerIp=GetServerIP();



IPEndPoint iep=new IPEndPoint(ServerIp,8000);



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







byte[] byteMessage=new byte[100];



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



socket.Bind(iep);



// do



while(true)



{



try



{



socket.Listen(5);



Socket newSocket=socket.Accept();



newSocket.Receive(byteMessage);







string sTime = DateTime.Now.ToShortTimeString ( ) ;



string msg=sTime+":"+"Message from:";



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



this.listBox1.Items.Add(msg);







}



catch(SocketException ex)



{



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



}



}



// while(byteMessage!=null);



}



//开始监听



private void button1_Click(object sender, System.EventArgs e)



{



try



{



mythread = new Thread(new ThreadStart(BeginListen));



mythread.Start();







}



catch(System.Exception er)



{



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



}



}











客户端:







using System.Net;



using System.Net.Sockets;



using System.Text;







private void button1_Click(object sender, System.EventArgs e)



{



BeginSend();



}



private void BeginSend()



{



string ip=this.txtip.Text;



string port=this.txtport.Text;







IPAddress serverIp=IPAddress.Parse(ip);



int serverPort=Convert.ToInt32(port);



IPEndPoint iep=new IPEndPoint(serverIp,serverPort);



byte[] byteMessage;



// do



// {



Socket socket=new Socket(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协议的发送和接收端







TCP协议的接收端







using System.Net.Sockets ; //使用到TcpListen类



using System.Threading ; //使用到线程



using System.IO ; //使用到StreamReader类







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



private Thread thThreadRead; //创建线程,用以侦听端口号,接收信息



private TcpListener tlTcpListen; //侦听端口号



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



private NetworkStream nsStream; //创建接收的基本数据流



private StreamReader srRead;



private System.Windows.Forms.StatusBar statusBar1;



private System.Windows.Forms.Button button1;



private System.Windows.Forms.ListBox listBox1; //从网络基础数据流中读取数据



private TcpClient tcClient ;







private void Listen ( )



{



try



{



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



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



statusBar1.Text = "正在监听..." ;



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



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



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



statusBar1.Text = "已经连接!";

转载于:https://www.cnblogs.com/lovenets/articles/422076.html

更多相关:

  • 第一个测试的主要代码: private function closureTest():void{this.addEventListener(Event.ENTER_FRAME, onEnter);}private var num:int = 1000;private function onEnter(e:Event):void{fo...

  • IHostingEnviroment 获取环境相关洗洗 IsDevelopment()、IsStaging()、IsProduction() 分别为:开发、准生产、生产环境 IsEnviroment("Uat") 自定义环境,比如自定义Uat环境 新建: appsettings.Uat.json文件 {"Enviroment":...

  • 七. DockPanel DockPanel定义一个区域,在此区域中,您可以使子元素通过描点的形式排列,这些对象位于 Children 属性中。停靠面板其实就是在WinForm类似于Dock属性的元 素。DockPanel会对每个子元素进行排序,并停靠在面板的一侧,多个停靠在同侧的元素则按顺序排序。     如果将 LastChild...

  • 该链接有导入,导出源码,我的代码有下链接改写,完善而成的, http://www.cnblogs.com/colder/p/3611906.html using System;using System.Collections.Generic;using System.Linq;using System.Web;using System...

  • 转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/ 对于SharePoint中已经是Record的Item,我们想要修改他的属性,这在UI界面是无法完成的: 这时需要通过Records.BypassLocks API来完成。设计一个tool,利用Records.BypassLocks...

  • C# async await 学习笔记1(http://www.cnblogs.com/siso/p/3691059.html)  提到了ThreadId是一样的,突然想到在WinForm中,非UI线程是无法直接更新UI线程上的控件的问题。 于是做了如下测试: using System; using System.Collectio...

  • 菜鸟一枚,正在学习C++ Gui Qt4,整理很零碎,欢迎批评指正   1.窗口标题: QWidget *window = new QWidget; window->setWindowTitle("Enter Your Age"); **************************************** 关于标题...

  • 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 总体思路是: 比较两个链表头节点,较小的插入新链表指针之后,同时较小链表指针向后移动一位 实现如下: ListNode* mergeTwo...

  • 1.直接调用微软socket对象处理 static void Main(string[] args){try{IPAddress ip = new IPAddress(new byte[] { 127, 0, 0, 1 });//在3721端口新建一个TcpListener对象TcpListener listener = new...

  •   现在很多地方都会用到zookeeper, 用到它的地方就是为了实现分布式。用到的场景就是服务注册,比如一个集群服务器,需要知道哪些服务器在线,哪些服务器不在线。   ZK有一个功能,就是创建临时节点,当机器启动应用的时候就会连接到一个ZK节点,然后创建一个临时节点,那么通过获取监听该路径,并且获取该路径下的节点数量就知道有哪些服务...

  • 前台到后台java时data日期类型的转化 在实体类中用@DataTimeFormat,这样设置即使传过来是空的字符串也是可以转的,要和前面传过来的格式一致,如 @XmlElement(name="BeginDate") @DateTimeFormat(pattern="yyyy-MM-dd") private Date begin...