• Socket通信简单实例(WCF调用Socket)


    服务端:

    控制台程序监听

     1 /// <summary>
     2     /// Server
     3     /// </summary>
     4     class Program
     5     {
     6         static Socket serverSocket;
     7         static Socket clientSocket;
     8         static Thread thread;
     9 
    10         static void Main(string[] args)
    11         {
    12             IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 3001);
    13             serverSocket = new Socket(ipep.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
    14             serverSocket.Bind(ipep);
    15             serverSocket.Listen(10);
    16             while (true)
    17             {
    18                 clientSocket = serverSocket.Accept();
    19                 thread = new Thread(new ThreadStart(doWork));
    20                 thread.Start();
    21             }
    22 
    23         }
    24 
    25         private static void doWork()
    26         {
    27             Socket s = clientSocket;//客户端信息 
    28             IPEndPoint ipEndPoint = (IPEndPoint)s.RemoteEndPoint;
    29             String address = ipEndPoint.Address.ToString();
    30             String port = ipEndPoint.Port.ToString();
    31             Console.WriteLine(address + ":" + port + " 连接过来了");
    32             Byte[] inBuffer = new Byte[1024];
    33             Byte[] outBuffer = new Byte[1024];
    34             String inBufferStr;
    35             String outBufferStr;
    36             try
    37             {
    38                 while (true)
    39                 {
    40                     s.Receive(inBuffer, 1024, SocketFlags.None);  
    41                     inBufferStr = Encoding.ASCII.GetString(inBuffer);
    42                     Console.WriteLine(address + ":" + port + "说:");
    43                     Console.WriteLine(inBufferStr);
    44                     outBufferStr = Console.ReadLine();
    45                     outBuffer = Encoding.ASCII.GetBytes(outBufferStr);
    46                     s.Send(outBuffer, outBuffer.Length, SocketFlags.None);
    47                 }
    48             }
    49             catch
    50             {
    51                 Console.WriteLine("客户端已关闭!");
    52             }
    53         } 
    54     }

    客户端

    业务逻辑层

     1 namespace CloudTraPlatWcf.Business
     2 {
     3     /// <summary>
     4     /// 
     5     /// </summary>
     6     public class BOutSide_Bond
     7     {
     8         private string Path = @"Side_Bond"; //日志存放路径
     9         static Socket _ClientSocket;
    10 
    11         #region 私有方法
    12         /// <summary>
    13         /// 
    14         /// </summary>
    15         /// <param name="outBufferStr">退还信息</param>
    16         /// <returns>退还结果</returns>
    17         public string HelpSendAndReceiveMessage(string outBufferStr)
    18         {
    19             string Ip = ConfigHelper.GetReturnBondIP();
    20             int Port = ConfigHelper.GetReturnBondPort();
    21             IPEndPoint _IPEndPoint = new IPEndPoint(IPAddress.Parse(Ip), Port);
    22             try
    23             {
    24                 if (_ClientSocket == null)
    25                 {
    26                     _ClientSocket = new Socket(_IPEndPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
    27                     _ClientSocket.Connect(_IPEndPoint); //将Socket连接到服务器  
    28                 }
    29                 Byte[] outBuffer = new Byte[1024];
    30                 Byte[] inBuffer = new Byte[1024];
    31                 //发送消息   
    32                 outBuffer = Encoding.ASCII.GetBytes(outBufferStr);
    33                 _ClientSocket.Send(outBuffer, outBuffer.Length,SocketFlags.None);
    34                 //接收服务器端信息                
    35                 _ClientSocket.Receive(inBuffer, 1024, SocketFlags.None);
    36                 string LogMsg = "";
    37                 Logger.Write(LogMsg,"",Path);
    38                 return Encoding.ASCII.GetString(inBuffer);
    39             }
    40             catch (Exception ex)
    41             {
    42                 throw ex;
    43             }
    44         }
    45         #endregion
    46     }
    47 }

    WCF契约

     1 namespace CloudTraPlatWcf.Contracts
     2 {
     3     /// <summary>
     4     /// 短信接口
     5     /// </summary>
     6     [ServiceContract(Name = "IOutSide_SMSContract")]
     7     public interface IOutSide_SMSContract
     8     {
     9         /// <summary>
    10         /// 
    11         /// </summary>
    12         /// <returns></returns>
    13         [OperationContract]
    14         string Test();
    15     }
    16 }

    WCF服务

     #region IOutSide_SMSContract 成员
    
            public string Test()
            {
                string res = new BOutSide_Bond().HelpSendAndReceiveMessage("Hello");
                return res;
            }
    
            #endregion
  • 相关阅读:
    vim 命令详解
    Helloworld with c
    VS扩展开发框架
    Putty是一个专业的SSH连接客户端
    你的Java代码对JIT编译友好么?(转)
    java nio的一个严重BUG(转)
    JVM可支持的最大线程数(转)
    Java下获取可用CPU数
    java观察者模式(转)
    Android开发之控制Toast的开启与关闭
  • 原文地址:https://www.cnblogs.com/yf2011/p/3989250.html
Copyright © 2020-2023  润新知