Socket通信简单实例(WCF调用Socket)
服务端:
控制台程序监听
- /// <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, );
- serverSocket = new Socket(ipep.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
- serverSocket.Bind(ipep);
- serverSocket.Listen();
- 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[];
- Byte[] outBuffer = new Byte[];
- String inBufferStr;
- String outBufferStr;
- try
- {
- while (true)
- {
- s.Receive(inBuffer, , 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[];
- Byte[] inBuffer = new Byte[];
- //发送消息
- outBuffer = Encoding.ASCII.GetBytes(outBufferStr);
- _ClientSocket.Send(outBuffer, outBuffer.Length,SocketFlags.None);
- //接收服务器端信息
- _ClientSocket.Receive(inBuffer, , 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
Socket通信简单实例(WCF调用Socket)的更多相关文章
- Java的Socket通信简单实例
服务端 package testlxd; import java.io.BufferedReader; import java.io.IOException; import java.io.Input ...
- .net Socket 通信简单实例(初级入门)
c/s控制台应用程序,Server.Client分别在两个项目中 服务端 using System; using System.Collections.Generic; using System.Li ...
- socket通信简单介绍
“一切皆Socket!” 话虽些许夸张,可是事实也是,如今的网络编程差点儿都是用的socket. ——有感于实际编程和开源项目研究. 我们深谙信息交流的价值,那网络中进程之间怎样通信,如我们每天打开浏 ...
- Socket通信 简单实现私聊、群聊(dos命令下)
很久以前的一个Demo,这里服务器只做转发功能,根据ID地址和端口号来标识身份,群聊和私聊只是简单实现, 服务器代码如下: import java.util.*; import java.io.*; ...
- Socket无连接简单实例
使用无连接的套接字,我们能够在自我包含的数据包里发送消息,采用独立的读函数读取消息,读取的消息是使用独立的发送函数发送的.但是UDP数据包不能保证可靠传输,存在许多的因素,比如网络繁忙等等,都有可能阻 ...
- Linux环境下用C语言实现socket 通信---简单代码
Socket编程实例: 服务器端:一直监听本机的8000号端口,如果收到连接请求,将接收请求并接收客户端发来的消息,并向客户端返回消息. 客户端:client.c /* File Name: clie ...
- 简单的Socket通信(简单的在线聊天)---winform
注:本博客适合刚开始学习winform程序的初学者,大牛请绕道(跪求大牛指导文中不足) .....10w字废话自动省略,直接开始正题. 首先从最基本的建立winform开始(本项目用的Vs2017) ...
- Socket通信编程实例(SIB和SS'SOB)
客户端: package socket; import java.io.BufferedReader; import java.io.IOException; import java.io.Input ...
- C#socket通信时,怎样判断socket双方是否断开连接
我在Server端new了一个socket,然后bind,开了一个线程来accept前来连接的client,每接到一个client前来连接就新开一个线程和它进行通信.我把Server端得到的socke ...
随机推荐
- sql统计上周销售量的起止时间
开始日期: >select DATEADD(Day, 1 - DATEPART(Weekday,CONVERT(varchar(10), GETDATE() - 7, 120)), CONVER ...
- jQuery农历黄历日期表
在线演示 本地下载
- 实验四 Android程序设计 实验报告 20162305李昱兴
实验四 Android程序设计 实验报告 20162305李昱兴 一.Android Studio的安装测试 1.有关该软件 Android Studio,是基于Itellij IDEA的一款流行的I ...
- CentOS6、7优化脚本完美版
#!/bin/bash SysVer=`cat /etc/redhat-release | awk -F'release' '{print $2}' | awk -F'[ .]+' '{print $ ...
- contos LAMP环境搭建
LINUX搭建LAMP笔记 .YUM:Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器.基于R ...
- 服务器状态监控之snmp&ipmi
一.ipmi 1.简介 IPMI(Intelligent Platform Management Interface)即智能平台管理接口是使硬件管理具备"智能化"的新一代通用接口标 ...
- CentOS 5 上使用yum同时安装32位和64位包的解决方法
在centos上使用yum在线安装软件包的时候,有时候会同时安装32位和64位的包.并且在update的时候也会更新双份. 其实让yum只安装64位的包,只要在 /etc/yum.conf 中加个 e ...
- Treflection05_扩展习题
1. package reflectionZ; import java.lang.reflect.Constructor; import java.lang.reflect.Method; publi ...
- JNI_Z_02_函数参数_JNIEnv*_jclass_jobject
1. 1.1.JNIEXPORT void JNICALL Java_包名_类名_函数名01(JNIEnv * env, jclass clazz) // Java代码中的 静态函数 1.2.JNIE ...
- Element UI 框架搭建
Element UI 框架搭建 1.webpack 全局安装 npm install -g webpack 2.淘宝镜像cnpm安装 npm install -g cnpm --registry=ht ...