0


C#教程 socket编程

C#教程 socket编程

编程需要恒心和毅力,最主要的是要有信心,循序渐进的完成任务。

一、socket类用于网络通信
命名空间System.Net.Sockets,完整的类引用System.Net.Sockets.Socket。Socket类支持各种网络协议。
二、简单的控制台程序

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceConsoleApplicationSocket01{classProgram{staticvoidMain(string[] args){}}}

三、添加socket变量

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Net.Sockets;namespaceConsoleApplicationSocket01{classProgram{staticvoidMain(string[] args){Socket UnitySocketServer=newSocket(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp);}}}

然后bind服务器主机的 IP地址:

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Net.Sockets;usingSystem.Net;namespaceConsoleApplicationSocket01{classProgram{staticvoidMain(string[] args){Socket UnitySocketServer=newSocket(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp);IPAddress HostIpAddress = IPAddress.Parse("127.0.0.1");
            UnitySocketServer.Bind(newIPEndPoint(HostIpAddress,5600));}}

四、让socket接收数据
UnitySocketServer.Receive();Receive()方法用于接收传入的数据,该方法有多个重载版本。
先定义接收数据的数组BytesOfReceived,然后调用Receive()接收数据

staticvoidMain(string[] args){Byte[] BytesOfReceived=newByte[512];Socket UnitySocketServer=newSocket(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp);IPAddress HostIpAddress = IPAddress.Parse("127.0.0.1");
            UnitySocketServer.Bind(newIPEndPoint(HostIpAddress,5600));
            UnitySocketServer.Receive(BytesOfReceived);}

当然,上面的程序会存在很多问题,下面进行修正。先将Receive()放入无限循环结构,使socket不停的接收消息:

staticvoidMain(string[] args){Byte[] BytesOfReceived=newByte[512];Socket UnitySocketServer=newSocket(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp);IPAddress HostIpAddress = IPAddress.Parse("127.0.0.1");
            UnitySocketServer.Bind(newIPEndPoint(HostIpAddress,5600));while(true){
                UnitySocketServer.Receive(BytesOfReceived);}

接下来,继续修正,先判断每次循环是否接收到消息,如果接收到消息就显示它。Receive()方法会返回接收的数据长度,我们要利用这个值。

staticvoidMain(string[] args){Byte[] BytesOfReceived=newByte[512];Socket UnitySocketServer=newSocket(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp);IPAddress HostIpAddress = IPAddress.Parse("127.0.0.1");
            UnitySocketServer.Bind(newIPEndPoint(HostIpAddress,5600));while(true){int NumOfReceived=0;
                NumOfReceived=UnitySocketServer.Receive(BytesOfReceived);if(NumOfReceived>0){
                    Console.Write(Console.Write(Encoding.UTF8.GetString(BytesOfReceived)););}}

到此,该程序具有了基本功能,接下来可以测试它。
五、为了测试以上程序,我们再次创建控制台程序,这次创建的程序是客户端程序。

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Net.Sockets;usingSystem.Net;namespaceConsoleApplicationSocketClient01{classProgram{staticvoidMain(string[] args){Byte[] BytesOfSended =Encoding.UTF8.GetBytes("whtskjdkjfg");Socket UnitySocketClient =newSocket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);IPAddress HostIpAddress = IPAddress.Parse("127.0.0.1");
            UnitySocketClient.Bind(newIPEndPoint(HostIpAddress,5601));while(true){int NumOfReceived =0;
                NumOfReceived = UnitySocketClient.SendTo(BytesOfSended,newIPEndPoint(HostIpAddress,5600));}}}}

六、按Ctrl+F5,运行上面的两个程序。发现运行良好。
七、可以在此基础上做进一步的修正,以完成其他功能。


本文转载自: https://blog.csdn.net/qq_40793198/article/details/128056093
版权归原作者 qq_40793198 所有, 如有侵权,请联系我们删除。

“C#教程 socket编程”的评论:

还没有评论