using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net.Sockets;
using System.Net;
//服务端的代码
namespace socket服务端
{
class Program
{
static void Main(string[] args)
{
startServetAsync();
Console.ReadKey();
}
static void startServetAsync()
{
Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPAddress ipAddress = IPAddress.Parse("192.168.0.146");
IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, 88);
serverSocket.Bind(ipEndPoint);
serverSocket.Listen(0);
// Socket clientSocket = serverSocket.Accept();
serverSocket.BeginAccept(AcceptCallBack, serverSocket);
//接受客户端的一条消息
//byte[] dataBuffer = new byte[1024];
//int count = clientSocket.Receive(dataBuffer);
//string msgRecieve = System.Text.Encoding.UTF8.GetString(dataBuffer, 0, count);
//Console.WriteLine(msgRecieve);
//Console.ReadKey();
//clientSocket.Close();
//serverSocket.Close();
}
static void AcceptCallBack(IAsyncResult ar)
{
Socket serverSocket = ar.AsyncState as Socket;
Socket clientSocket = serverSocket.EndAccept(ar);
//向客户端发送一条消息
string msg = "Hello Client!客户端";
byte[] data = System.Text.Encoding.UTF8.GetBytes(msg);
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//通过try catch 避免客户端非正常关闭报错
{
clientSocket = ar.AsyncState as Socket;
int count = clientSocket.EndReceive(ar);
if (count == 0)//如果客户端非正常关闭 那么接受到数据就是空的 长度为0
{
clientSocket.Close();
return;
}
string msg = Encoding.UTF8.GetString(dataBuffer, 0, count);
Console.WriteLine(msg);
Console.WriteLine("从客户端接收数据" + msg);
clientSocket.BeginReceive(dataBuffer, 0, 1024, SocketFlags.None, receiveCallBack, clientSocket);
}
catch (Exception e)
{
Console.WriteLine(e);
if (clientSocket != null)
{
clientSocket.Close();
}
}
//finally//无论是否异常都会运行
//{
//}
}
void startServerSync()//服务器同步接受数据
{
Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPAddress ipAddress = IPAddress.Parse("192.168.0.146");
IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, 88);
serverSocket.Bind(ipEndPoint);
serverSocket.Listen(0);
Socket clientSocket = serverSocket.Accept();
//向客户端发送一条消息
string msg = "Hello Client!客户端";
byte[] data = System.Text.Encoding.UTF8.GetBytes(msg);
clientSocket.Send(data);
//接受客户端的一条消息
byte[] dataBuffer = new byte[1024];
int count = clientSocket.Receive(dataBuffer);
string msgRecieve = System.Text.Encoding.UTF8.GetString(dataBuffer, 0, count);
Console.WriteLine(msgRecieve);
Console.ReadKey();
clientSocket.Close();
serverSocket.Close();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Net.Sockets;
namespace socket客户端
{
class Program
{
static void Main(string[] args)
{
Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
clientSocket.Connect(new IPEndPoint(IPAddress.Parse("192.168.0.146"),88));
byte[] data = new byte[1024];
int count = clientSocket.Receive(data);
string msg = System.Text.Encoding.UTF8.GetString(data, 0, count);
Console.WriteLine(msg);
while (true)
{
string s = Console.ReadLine();
if (s == "c")//客户端如果输入c 正常关闭
{
clientSocket.Close();
return;
}
clientSocket.Send(Encoding.UTF8.GetBytes(s));
// Console.WriteLine(s);
}
Console.ReadKey();
clientSocket.Close();
}
}
}
客户端向服务端发送消息
最新推荐文章于 2023-12-25 17:38:36 发布