Socket通信简单实例(WCF调用Socket)
2014-09-23 20:38
344 查看
服务端:
控制台程序监听
客户端
业务逻辑层
WCF契约
WCF服务
控制台程序监听
/// <summary> /// Server /// </summary> class Program { static Socket serverSocket; static Socket clientSocket; static Thread thread; static void Main(string[] args) { IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 3001); serverSocket = new Socket(ipep.AddressFamily, SocketType.Stream, ProtocolType.Tcp); serverSocket.Bind(ipep); serverSocket.Listen(10); while (true) { clientSocket = serverSocket.Accept(); thread = new Thread(new ThreadStart(doWork)); thread.Start(); } } private static void doWork() { Socket s = clientSocket;//客户端信息 IPEndPoint ipEndPoint = (IPEndPoint)s.RemoteEndPoint; String address = ipEndPoint.Address.ToString(); String port = ipEndPoint.Port.ToString(); Console.WriteLine(address + ":" + port + " 连接过来了"); Byte[] inBuffer = new Byte[1024]; Byte[] outBuffer = new Byte[1024]; String inBufferStr; String outBufferStr; try { while (true) { s.Receive(inBuffer, 1024, SocketFlags.None); inBufferStr = Encoding.ASCII.GetString(inBuffer); Console.WriteLine(address + ":" + port + "说:"); Console.WriteLine(inBufferStr); outBufferStr = Console.ReadLine(); outBuffer = Encoding.ASCII.GetBytes(outBufferStr); s.Send(outBuffer, outBuffer.Length, SocketFlags.None); } } catch { Console.WriteLine("客户端已关闭!"); } } }
客户端
业务逻辑层
namespace CloudTraPlatWcf.Business { /// <summary> /// /// </summary> public class BOutSide_Bond { private string Path = @"\Side_Bond"; //日志存放路径 static Socket _ClientSocket; #region 私有方法 /// <summary> /// /// </summary> /// <param name="outBufferStr">退还信息</param> /// <returns>退还结果</returns> public string HelpSendAndReceiveMessage(string outBufferStr) { string Ip = ConfigHelper.GetReturnBondIP(); int Port = ConfigHelper.GetReturnBondPort(); IPEndPoint _IPEndPoint = new IPEndPoint(IPAddress.Parse(Ip), Port); try { if (_ClientSocket == null) { _ClientSocket = new Socket(_IPEndPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp); _ClientSocket.Connect(_IPEndPoint); //将Socket连接到服务器 } Byte[] outBuffer = new Byte[1024]; Byte[] inBuffer = new Byte[1024]; //发送消息 outBuffer = Encoding.ASCII.GetBytes(outBufferStr); _ClientSocket.Send(outBuffer, outBuffer.Length,SocketFlags.None); //接收服务器端信息 _ClientSocket.Receive(inBuffer, 1024, SocketFlags.None); string LogMsg = ""; Logger.Write(LogMsg,"",Path); return Encoding.ASCII.GetString(inBuffer); } catch (Exception ex) { throw ex; } } #endregion } }
WCF契约
namespace CloudTraPlatWcf.Contracts { /// <summary> /// 短信接口 /// </summary> [ServiceContract(Name = "IOutSide_SMSContract")] public interface IOutSide_SMSContract { /// <summary> /// /// </summary> /// <returns></returns> [OperationContract] string Test(); } }
WCF服务
#region IOutSide_SMSContract 成员 public string Test() { string res = new BOutSide_Bond().HelpSendAndReceiveMessage("Hello"); return res; } #endregion
相关文章推荐
- WCF简单实例---同步调用
- C# WCF简单实例 出错:调用方未由服务进行身份验证
- WCF简单实例---同步调用
- PHP异步调用socket简单实例
- 关于webservice的异步调用简单实例
- 最简单调用系统的“数据链接属性”窗口实例
- SOCKET简单实例
- C#调用oracle存储过程 最简单的实例
- 关于webservice的异步调用简单实例
- 最简单EXT调用WCF
- axis2的配置和一个简单调用实例
- 为Windows应用创建简单的异步调用模式(附实例代码)
- 使用vs2005 webservice 创建,部署,调用的简单实例
- [转]Socket无连接简单实例
- WCF热门问题编程示例(2)多个实例调用一个WCF服务操作,需要等待服务响应吗
- RMI调用的简单实例
- 网络编程C#篇(二):Socket无连接简单实例 推荐
- SQL技巧:如何调用SQL中的函数 附简单实例---一看就懂
- WinForm调用WebService简单实例详解【新手入门】
- 最简单的Windows套接字(Socket)例子(源码,实例)