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

  • 相关阅读:
    超星电子书下载攻略
    快速生成PDF书签
    2016抢票软件分享
    Win10安装framework3.5
    .NET破解之分享给新注册的朋友
    封装JedisClient.提供API实现对redis的操作
    java操作redis集群配置[可配置密码]和工具类
    redis 集群java.lang.NoSuchMethodError:SpringJAR包版本冲突错误解决方法
    linux端口开放指定端口的两种方法
    redis requires ruby version 2.2.2的解决方案
  • 原文地址:https://www.cnblogs.com/99app/p/3486584.html
Copyright © 2011-2022 走看看