您的位置:首页 > 其它

Socket通信简单实例(WCF调用Socket)

2014-09-23 20:38 344 查看
服务端:

控制台程序监听

/// <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, 3001);
serverSocket = new Socket(ipep.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
serverSocket.Bind(ipep);
serverSocket.Listen(10);
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[1024];
Byte[] outBuffer = new Byte[1024];
String inBufferStr;
String outBufferStr;
try
{
while (true)
{
s.Receive(inBuffer, 1024, 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[1024];
Byte[] inBuffer = new Byte[1024];
//发送消息
outBuffer = Encoding.ASCII.GetBytes(outBufferStr);
_ClientSocket.Send(outBuffer, outBuffer.Length,SocketFlags.None);
//接收服务器端信息
_ClientSocket.Receive(inBuffer, 1024, 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: