服务端:

控制台程序监听

 /// <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. 20145229吴姗珊《网络对抗》shellcode注入&Return-to-libc攻击深入

    20145229吴姗珊<网络对抗>shellcode注入&Return-to-libc攻击深入(待上传) shellcode注入 shellcode是一段代码,是溢出程序和蠕虫病毒 ...

  2. 非法字符: '\ufeff' 解决方案|错误: 需要class, interface或enum

    解决方案,把文件用Editplus打开,UTF-8+BOM编码的文件转为普通的UTF-8文件

  3. Android Studio 入门级教程

    引用原文:http://www.cnblogs.com/abao0/p/6934023.html 写博客是为了记住自己容易忘记的东西,另外也是对自己工作的总结,文章可以转载,无需版权.希望尽自己的努力 ...

  4. Routing and Action Selection in ASP.NET Web API

    https://exceptionnotfound.net/using-http-methods-correctly-in-asp-net-web-api/ The algorithm ASP.NET ...

  5. 简单的aop实现日志打印(切入点表达式)

    Spring中可以使用注解或XML文件配置的方式实现AOP. 1.导入jar包 com.springsource.net.sf.cglib -2.2.0.jar com.springsource.or ...

  6. skynet 创建存储过程脚本

    最近主程更改了数据库的操作方案,由之前的拼写sql脚本转为在mysql端创建好存储过程后,直接调用存储过程. 首先对一个表测试上述过程: 数据库端存储过程:(测试表) CREATE TABLE `ra ...

  7. scjp考试准备 - 10 - 类型转换

    题目为如下代码的执行结果: class Building{} public class Barn extends Building{ public static void main(String[] ...

  8. Treflection06_调用静态方法

    1. package reflectionZ; import java.lang.reflect.Method; public class Treflection06 { public static ...

  9. 绘制三角形(sass)

    绘制三角形 /// draw triangle/// @param {type} $type [''] - triangleUp triangleDown triangleLeft triangleR ...

  10. 项目中如何使用EF

    本文将在技术层面挑战园子里的权威大牛们,言语不敬之处敬请包涵.本文旨为技术交流,欢迎拍砖. 园子里面分享和推荐Entity Framework(以下简称EF)的Repository(仓储)设计模式的文 ...