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 ...
随机推荐
- CF715E Complete the Permutations(第一类斯特林数)
题目 CF715E Complete the Permutations 做法 先考虑无\(0\)排列的最小花费,其实就是沿着置换交换,花费:\(n-\)环个数,所以我们主要是要求出规定环的个数 考虑连 ...
- jQuery图片垂直滚动焦点图
在线演示 本地下载
- [POI2013]BAJ-Bytecomputer
题目描述 A sequence of integers from the set is given. The bytecomputer is a device that allows the foll ...
- Moore majority vote algorithm(摩尔投票算法)
Boyer-Moore majority vote algorithm(摩尔投票算法) 简介 Boyer-Moore majority vote algorithm(摩尔投票算法)是一种在线性时间O( ...
- scala学习手记26 - 重用函数值
函数值对消除代码重复有很大的帮助.但是像函数值这样直接将一个函数作为另一个函数的参数却不太利于函数值本身的重用. 来看一个例子: class Equipment(val routine: Int =& ...
- vue2 遇到的问题汇集ing
1 .子路由 { path: '/order-list', //订单列表 name: "order-list", component(resolve) { require.ensu ...
- Python IOError: [Errno 22] invalid mode ('r') 解决方法
环境 Anaconda3 Python 3.6, Window 64bit 书籍 O'Reilly出版的Wes McKinney编的<Python for Data Analysis> r ...
- Educational Codeforces Round 23D
给n个数求每个子区间的价值,区间的价值是最大值-最小值 套路题= =,分别算最大值和最小值的贡献,用并查集维护,把相邻点连一条边,然后sort,求最大是按边价值(两个点的最大价值)小的排,求最小是按最 ...
- poj3683 2 -sat输出路径
tarjan缩点,拓扑排序染色输出(貌似挑战上面没有拓扑啊,而且这样写还过了= =) 主要是找s,t,d,三者之间的关系,找出合取范式这题就很容易了 #include<map> #incl ...
- idea结合git使用
1.下载安装好git.exe2. 2.安装好以后在cmd输入git 3.在idea配置git环境 4.托管项目到码云 5.登录码云官网,地址就是你在码云注册的账号和密码