zoukankan      html  css  js  c++  java
  • .Net中的Socket通讯

    .NetFrameWork为Socket通讯提供了System.Net.Socket命名空间,在这个命名空间里面有以下几个常用的重要类分别是:
    ·Socket类 这个低层的类用于管理连接,WebRequest,TcpClient和UdpClient在内部使用这个类。
    ·NetworkStream类 这个类是从Stream派生出来的,它表示来自网络的数据流
    ·TcpClient类 允许创建和使用TCP连接
    ·TcpListener类 允许监听传入的TCP连接请求
    ·UdpClient类 用于UDP客户创建连接(UDP是另外一种TCP协议,但没有得到广泛的使用,主要用于本地网络)

    一、使用Socket实现两机通信(TCP)

    示例代码请见附件<使用Socket实现两机通信>

    c# 代码

    1. Socket(AddressFamily addressFamily,SocketType socketType,ProtocolType protocolType);

    其中,addressFamily 参数指定 Socket 使用的寻址方案,socketType 参数指定 Socket 的类型,protocolType 参数指定 Socket 使用的协议。

    服务端:

    1、创建Socket实例

    c# 代码

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

    2、将此Socket实例绑定至服务器(本机)的某个端口

    c# 代码

    1. IPAddress ip = IPAddress.Parse("172.16.1.15"); 
    2. IPEndPoint ipe = new IPEndPoint(ip, 2000); 
    3. s.Bind(ipe);//绑定2000端口

    3、开始监听,如果监听到则进行相应的处理

    客户端:

    c# 代码

    1. while (true
    2. s.Listen(0);//开始监听
    3. Socket temp = s.Accept();//为新建连接创建新的Socket。
    4. string recvStr = ""; 
    5. byte[] recvBytes = new byte[1024]; 
    6. int bytes; 
    7. bytes = temp.Receive(recvBytes, recvBytes.Length, 0);//从客户端接受信息
    8. recvStr += Encoding.ASCII.GetString(recvBytes, 0, bytes); 
    9. Console.WriteLine("Server Get Message:{0}", recvStr);//把客户端传来的信息显示出来
    10. string sendStr = "From server: Ok!Client Send Message Sucessful!"; 
    11. byte[] bs = Encoding.ASCII.GetBytes(sendStr); 
    12. temp.Send(bs, bs.Length, 0);//返回客户端成功信息
    13. temp.Close(); 

    1、创建Socket实例

    c# 代码

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

    2、将此Socket连接到服务器

    c# 代码

    1. IPAddress ip = IPAddress.Parse("172.16.1.15"); 
    2. IPEndPoint ipe = new IPEndPoint(ip, 2000);//把ip和端口转化为IPEndPoint实例
    3. c.Connect(ipe);//连接到服务器

    3、向服务器发送信息

    c# 代码

    1. string sendStr = "hello!This is a socket test"; 
    2. byte[] bs = Encoding.ASCII.GetBytes(sendStr); 
    3. c.Send(bs, bs.Length, 0);//发送测试信息

    4、接收服务器返回的信息

    c# 代码

    1. string recvStr = ""; 
    2. byte[] recvBytes = new byte[1024]; 
    3. int bytes; 
    4. bytes = c.Receive(recvBytes, recvBytes.Length, 0);//从服务器端接受返回信息
    5. recvStr += Encoding.ASCII.GetString(recvBytes, 0, bytes); 
    6. Console.WriteLine("Client Get Message:{0}", recvStr);//显示服务器返回信息

    5、关闭Socket

    c# 代码

    1. c.Close();

    Socket通信.rar

  • 相关阅读:
    Android开发总结
    LeakCanary原理分析
    机器学习
    Kivy 中文教程 实例入门 简易画板 (Simple Paint App):2. 实现绘图功能
    Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 3. 循环
    Kivy 中文教程 实例入门 简易画板 (Simple Paint App):1. 自定义窗口部件 (widget)
    Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 2. 变量
    Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 1. 神秘朋友
    Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 0. 准备工作
    远程显示(操作) 服务器 GUI 程序(图形化界面) (基于 X11 Forwarding + Centos + MobaXterm)
  • 原文地址:https://www.cnblogs.com/99app/p/3486584.html
Copyright © 2011-2022 走看看