服务端:

控制台程序监听

 /// <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)的更多相关文章

  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. Django-JS实现的ajax

    JS实现的ajax ajax的优缺点 AJAX使用Javascript技术向服务器发送异步请求 AJAX无须刷新整个页面 因为服务器响应内容不再是整个页面,而是页面中的局部,所以AJAX性能高 小练习 ...

  2. 移植madplay到jz2440【学习笔记】

    平台:jz2440 作者:庄泽彬(欢迎转载,请注明作者) 说明:韦东山一期视频学习笔记 交叉编译工具:arm-linux-gcc (GCC) 3.4.5 PC环境:ubuntu16.04 一.移植ma ...

  3. java实现同步的方法

    为何要实现同步 java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时(如数据的增删改查),      将会导致数据不准确,相互之间产生冲突,因此加入同步锁以避免在该线程没有完成操作之前 ...

  4. spring data redis的使用jar包版本冲突问题

    spring data redis 与spring 版本之间会有不兼容,要求spring 最低版本为4.2.6,这里推荐的一个版本 spring 4.3.2  spring data redis 1. ...

  5. LeetCode——Add Strings

    LeetCode--Add Strings Question Given two non-negative integers num1 and num2 represented as string, ...

  6. 403.14-Forbidden Web 服务器被配置为不列出此目录的内容

    第二次碰到这个问题了,记录一下 解决方案:1. 运行->cmd 2. cd  C:\Windows\Microsoft.NET\Framework64\v4.0.30319 3. aspnet_ ...

  7. springboot处理session生命周期

    在使用springboot开发过程中发现用户登陆后60s后session就自动失效了,需要重新登陆,明明 application.yml  文件里已经配置了 server.session.timeou ...

  8. CNI:容器网络接口

    CNI 简介 不管是 docker 还是 kubernetes,在网络方面目前都没有一个完美的.终极的.普适性的解决方案,不同的用户和企业因为各种原因会使用不同的网络方案.目前存在网络方案 flann ...

  9. LeetCode第[49]题(Java):Group Anagrams

    题目:同字符分组 难度:Medium 题目内容: Given an array of strings, group anagrams together. 翻译:给定一组字符串数组,按相同字符组成的字符 ...

  10. 缓存技术内部交流_01_Ehcache3简介

    参考资料: http://www.ehcache.org/documentation/3.2/getting-started.html http://www.ehcache.org/documenta ...