服务端:

控制台程序监听

  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, );
  13. serverSocket = new Socket(ipep.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
  14. serverSocket.Bind(ipep);
  15. serverSocket.Listen();
  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[];
  33. Byte[] outBuffer = new Byte[];
  34. String inBufferStr;
  35. String outBufferStr;
  36. try
  37. {
  38. while (true)
  39. {
  40. s.Receive(inBuffer, , 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[];
  30. Byte[] inBuffer = new Byte[];
  31. //发送消息
  32. outBuffer = Encoding.ASCII.GetBytes(outBufferStr);
  33. _ClientSocket.Send(outBuffer, outBuffer.Length,SocketFlags.None);
  34. //接收服务器端信息
  35. _ClientSocket.Receive(inBuffer, , 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服务

  1. #region IOutSide_SMSContract 成员
  2.  
  3. public string Test()
  4. {
  5. string res = new BOutSide_Bond().HelpSendAndReceiveMessage("Hello");
  6. return res;
  7. }
  8.  
  9. #endregion

Socket通信简单实例(WCF调用Socket)的更多相关文章

  1. Java的Socket通信简单实例

    服务端 package testlxd; import java.io.BufferedReader; import java.io.IOException; import java.io.Input ...

  2. .net Socket 通信简单实例(初级入门)

    c/s控制台应用程序,Server.Client分别在两个项目中 服务端 using System; using System.Collections.Generic; using System.Li ...

  3. socket通信简单介绍

    “一切皆Socket!” 话虽些许夸张,可是事实也是,如今的网络编程差点儿都是用的socket. ——有感于实际编程和开源项目研究. 我们深谙信息交流的价值,那网络中进程之间怎样通信,如我们每天打开浏 ...

  4. Socket通信 简单实现私聊、群聊(dos命令下)

    很久以前的一个Demo,这里服务器只做转发功能,根据ID地址和端口号来标识身份,群聊和私聊只是简单实现, 服务器代码如下: import java.util.*; import java.io.*; ...

  5. Socket无连接简单实例

    使用无连接的套接字,我们能够在自我包含的数据包里发送消息,采用独立的读函数读取消息,读取的消息是使用独立的发送函数发送的.但是UDP数据包不能保证可靠传输,存在许多的因素,比如网络繁忙等等,都有可能阻 ...

  6. Linux环境下用C语言实现socket 通信---简单代码

    Socket编程实例: 服务器端:一直监听本机的8000号端口,如果收到连接请求,将接收请求并接收客户端发来的消息,并向客户端返回消息. 客户端:client.c /* File Name: clie ...

  7. 简单的Socket通信(简单的在线聊天)---winform

    注:本博客适合刚开始学习winform程序的初学者,大牛请绕道(跪求大牛指导文中不足) .....10w字废话自动省略,直接开始正题. 首先从最基本的建立winform开始(本项目用的Vs2017) ...

  8. Socket通信编程实例(SIB和SS'SOB)

    客户端: package socket; import java.io.BufferedReader; import java.io.IOException; import java.io.Input ...

  9. C#socket通信时,怎样判断socket双方是否断开连接

    我在Server端new了一个socket,然后bind,开了一个线程来accept前来连接的client,每接到一个client前来连接就新开一个线程和它进行通信.我把Server端得到的socke ...

随机推荐

  1. sql统计上周销售量的起止时间

    开始日期: >select DATEADD(Day, 1 - DATEPART(Weekday,CONVERT(varchar(10), GETDATE() - 7, 120)), CONVER ...

  2. jQuery农历黄历日期表

    在线演示 本地下载

  3. 实验四 Android程序设计 实验报告 20162305李昱兴

    实验四 Android程序设计 实验报告 20162305李昱兴 一.Android Studio的安装测试 1.有关该软件 Android Studio,是基于Itellij IDEA的一款流行的I ...

  4. CentOS6、7优化脚本完美版

    #!/bin/bash SysVer=`cat /etc/redhat-release | awk -F'release' '{print $2}' | awk -F'[ .]+' '{print $ ...

  5. contos LAMP环境搭建

    LINUX搭建LAMP笔记 .YUM:Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器.基于R ...

  6. 服务器状态监控之snmp&ipmi

    一.ipmi 1.简介 IPMI(Intelligent Platform Management Interface)即智能平台管理接口是使硬件管理具备"智能化"的新一代通用接口标 ...

  7. CentOS 5 上使用yum同时安装32位和64位包的解决方法

    在centos上使用yum在线安装软件包的时候,有时候会同时安装32位和64位的包.并且在update的时候也会更新双份. 其实让yum只安装64位的包,只要在 /etc/yum.conf 中加个 e ...

  8. Treflection05_扩展习题

    1. package reflectionZ; import java.lang.reflect.Constructor; import java.lang.reflect.Method; publi ...

  9. JNI_Z_02_函数参数_JNIEnv*_jclass_jobject

    1. 1.1.JNIEXPORT void JNICALL Java_包名_类名_函数名01(JNIEnv * env, jclass clazz) // Java代码中的 静态函数 1.2.JNIE ...

  10. Element UI 框架搭建

    Element UI 框架搭建 1.webpack 全局安装 npm install -g webpack 2.淘宝镜像cnpm安装 npm install -g cnpm --registry=ht ...