C#实现Socket通信的解决⽅法
本⽂以实例详述了C#实现Socket通信的解决⽅法,具体实现步骤如下:
1、⾸先打开VS新建两个控制台应⽤程序:
ConsoleApplication_socketServer和ConsoleApplication_socketClient。
2、在ConsoleApplication_socketClient中输⼊以下代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
namespace ConsoleApplication_socketClient
{
class Program
{
static Socket clientSocket;
static void Main(string[] args)
{
//将⽹络端点表⽰为IP地址和端⼝⽤于socket侦听时绑定
IPEndPoint ipep = new IPEndPoint(IPAddress.Parse("*.*.*.*"), 3001); //填写⾃⼰电脑的IP或者其他电脑的IP,如果是其他电脑IP的话需将ConsoleApplication_socketServer⼯程放在对应的电脑上。 clientSocket = new Socket(ipep.AddressFamily,SocketType.Stream,ProtocolType.Tcp);
通信工程考研//将Socket连接到服务器
try
{
clientSocket.Connect(ipep);
String outBufferStr;
Byte[] outBuffer = new Byte[1024];
Byte[] inBuffer = new Byte[1024];
while (true)
{
//发送消息
outBufferStr = Console.ReadLine();
outBuffer = Encoding.ASCII.GetBytes(outBufferStr);
clientSocket.Send(outBuffer, outBuffer.Length, SocketFlags.None);
//接收服务器端信息
clientSocket.Receive(inBuffer, 1024, SocketFlags.None);//如果接收的消息为空阻塞当前循环
Console.WriteLine("服务器说:");
Console.WriteLine(Encoding.ASCII.GetString(inBuffer));
}
}
catch
{
Console.WriteLine("服务未开启!");
Console.ReadLine();
}
}
}
}
3、在ConsoleApplication_socketServer中输⼊以下代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace ConsoleApplication_socketServer
{
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("客户端已关闭!");
}
}
}
}
4、先运⾏ConsoleApplication_socketServer,后运⾏ConsoleApplication_socketClient就可以通信了。本例给出了基本的实现代码,读者可以根据⾃⾝的需求进⼀步完成个性化功能。
发布评论