Socket框架 c# 搭建简单的通讯服务器
时间:2019-01-19
本文章向大家介绍Socket框架 c# 搭建简单的通讯服务器,主要包括Socket框架 c# 搭建简单的通讯服务器使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
服务器端:
using System;
using System.Text;
using System.Net.Sockets;
using System.Net;
namespace TCPClient
{
class Program
{
static void Main(string[] args)
{
Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
clientSocket.Connect(new IPEndPoint(IPAddress.Parse("xxx.xxx.xxx.xxx"), 88));//建立连接
byte[] data = new byte[1024];
int count = clientSocket.Receive(data);
string msg = Encoding.UTF8.GetString(data, 0, count);//转换数据
Console.Write(msg);
while (true)
{
string s = Console.ReadLine();
if (s == "c")
{
clientSocket.Close();
return;
}
clientSocket.Send(Encoding.UTF8.GetBytes(s));//需要转换编码格式
}
Console.ReadKey();
clientSocket.Close();
}
}
}
客户端:
//本机xxx.xxx.xxx.xxx
using System.Net.Sockets;
using System.Net;
using System.Text;
using System;
namespace ServiceTerminal
{
class Program
{
static void Main(string[] args)
{
StartServerAsync();
Console.ReadKey();
}
static void StartServerAsync()//异步
{
Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//寻址方案,类型,协议
IPAddress ipAddress = IPAddress.Parse("xxx.xxx.xxx.xxx");//绑定IP
IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, 88);//绑定端口号
serverSocket.Bind(ipEndPoint);//绑定ip和端口号
serverSocket.Listen(0);//挂起客户端数量队列为 0==无限 监听
serverSocket.BeginAccept(AcceptCallBack, serverSocket);//异步等待客户端连接
}
static void AcceptCallBack(IAsyncResult ar)
{
Socket serverSocket = ar.AsyncState as Socket;
Socket clientSocket = serverSocket.EndAccept(ar);
string msg = "Hello Client!";
byte[] data = Encoding.UTF8.GetBytes(msg);//根据UTF8转换编码格式
clientSocket.Send(data);//向客户端发送消息
clientSocket.BeginReceive(dataBuffer, 0, 1024, SocketFlags.None, ReceiveCallBack, clientSocket);//异步进行接受数据
serverSocket.BeginAccept(AcceptCallBack, serverSocket);//递归
}
static byte[] dataBuffer = new byte[1024];//设置数组最大字节
static void ReceiveCallBack(IAsyncResult ar)
{
Socket clientSocket = null;
try
{
clientSocket = ar.AsyncState as Socket;
int count = clientSocket.EndReceive(ar);
if (count == 0)//处理正常关闭情况
{
clientSocket.Close();
return;
}
string msg = Encoding.UTF8.GetString(dataBuffer, 0, count);
Console.WriteLine("从客户端接收到数据:" + count + msg);
clientSocket.BeginReceive(dataBuffer, 0, 1024, SocketFlags.None, ReceiveCallBack, clientSocket);//回调 可再次接收消息
}
catch (Exception e)//处理非正常关闭情况
{
Console.WriteLine(e);
if (clientSocket != null)
{
clientSocket.Close();
}
}
}
static void StartServerSync()//同步
{
Socket serverSocker = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//寻址方案,类型,协议
IPAddress ipAddress = IPAddress.Parse("10.0.117.245");//绑定IP
IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, 88);//绑定端口号
serverSocker.Bind(ipEndPoint);//绑定ip和端口号
serverSocker.Listen(0);//挂起客户端数量队列为 0==无限 监听
serverSocker.Accept();//接收端口 代码到在这里会暂停 直到有客户端连入
Socket clientSocket = serverSocker.Accept();//接受一个客户端连接
string msg = "Hello Client!";
byte[] data = Encoding.UTF8.GetBytes(msg);//根据UTF8转换编码格式
clientSocket.Send(data);//向客户端发送消息
byte[] dataBuffer = new byte[1024];//创建接受数据的数组大小
int count = clientSocket.Receive(dataBuffer);//接收消息
string msgReceive = Encoding.UTF8.GetString(dataBuffer, 0, count);//从dataBuffer数组中的0号位置开始 读取count个字节的数据 根据UTF8转换编码格式
Console.WriteLine(msgReceive);
clientSocket.Close();//关闭与客户端的连接
serverSocker.Close();//关闭服务端
}
}
}
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法