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 ...
随机推荐
- sqlmap的简要使用方法
仅作为备忘!!! sqlmap使用: 注入类型有四种分别为:boolean-based blind.error-based.stacked queries.inline query. sqlmap - ...
- 探测web服务质量方法
- no matching key exchange method found. Their offer: diffie-hellman-group1-sha1
1. 使用git克隆项目报错 $ git clone ssh://liuchao@192.168.7.32:29418/platform/Midou Cloning into 'Midou'... U ...
- Google maps api demo
demo: <!DOCTYPE html> <html> <head> <meta name="viewport" content=&qu ...
- Largest Rectangle in Histogram, 求矩形图中最大的长方形面积
问题描述: Given n non-negative integers representing the histogram's bar height where the width of each ...
- angularjs跨域post解决方案
转自:http://www.thinksaas.cn/topics/0/34/34536.html 前端同学李雷和后台同学韩梅梅分别在自己电脑上进行开发,后台接口写好的时候,李雷改动完就把前端代码上传 ...
- linux的一些操作
在终端输入cat /etc/issue 查看ubuntu的半磅不知道ubuntu特权用户root的密码时:Ubuntu在默认情况下是不启用root用户的,所以这对于一下对于linux命令不熟悉的用户在 ...
- Python 文本相似度分析
环境 Anaconda3 Python 3.6, Window 64bit 目的 利用 jieba 进行分词,关键词提取 利用gensim下面的corpora,models,similarities ...
- SQLite在C#中的使用
SQLite是一款轻型的数据库,在一些数据量不太大的程序中,它暂用的资源非常低.支持很多操作系统和许多语言,所以还是很方便的.在C#中,要用的话可以通过网站来下载或者在VS中通过NuGet来下载.这个 ...
- Django进阶Model篇003 - 数据库同步技巧
一.认识一个目录 目录名:migrations 作用:用来存放通过makemigrations命令生成的数据库脚本,不熟悉的情况下,里面生成的脚本不要轻易修改.app目录下必须要有migrations ...