制作简单的Socket连接
今天来写一篇关于Socket联网的文章吧!,这篇文章写完后可实现一个简易的服务器和客户端的连接。打开VS新建一个控制台应用程序。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//网络通信
using System.Net;
using System.Net.Sockets;
namespace SocketTest
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("请选择:1、服务器:2、客户端");
string Input = Console.ReadLine();
Program pro = new Program();
if (Input=="1")
{
//写服务器代码
pro.Server();
}
else
{
//写客户端代码
pro.Client();
}
Console.ReadLine();
}
//服务器方法
public void Server()
{
//1.创建Socket 需要引用命名空间 总服务器
Socket socket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
//ipconfig
IPAddress ip = IPAddress.Parse("192.168.10.235"); //ip需要写自己电脑的IP
IPEndPoint point = new IPEndPoint(ip,5333);
//绑定端口
socket.Bind(point);
//启用监听
socket.Listen(100);
//接收数据
byte[] byteData = new byte[1024];
//异常捕获
try
{
while (true)
{
//临时服务器 来处理客户端对应的请求
Socket tempSocket = socket.Accept();
//拿到数据长度
int length = tempSocket.Receive(byteData);
//根据长度转成对应的数据类型
string data = Encoding.UTF8.GetString(byteData, 0, byteData.Length);
Console.WriteLine("收到客户端数据了:" + data);
//准备为客户端返回数据了
byte[] sendData = Encoding.UTF8.GetBytes("感冒了好难受");
tempSocket.Send(sendData);
}
}
catch(Exception e)
{
Console.WriteLine(e.Message);
throw;
}
finally
{
Console.WriteLine("服务器关了");
socket.Close();
}
}
//客户端方法
public void Client()
{
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//打开cmd 输入 ipconfig 可查看自己本机的IP地址
IPAddress ip = IPAddress.Parse("192.168.10.235");
IPEndPoint point = new IPEndPoint(ip, 5333);
socket.Connect(point);
try
{
while (true)
{
Console.WriteLine("请说话:");
string mes = Console.ReadLine();
if (mes != string.Empty)
{
//发送->byte
byte[] sendData = Encoding.UTF8.GetBytes(mes);
socket.Send(sendData);
//接收
byte[] receiveData = new byte[1024]; //1024字节等于一个byte
//拿到数据内容的长度
int length = socket.Receive(receiveData);
string str = Encoding.UTF8.GetString(receiveData, 0, receiveData.Length);
Console.WriteLine("服务器返回的数据为:" + str);
}
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
throw;
}
}
}
}
代码写好后需要先运行VS,输入1就打开服务器了,然后在文件资源管理器中打开文件
打开第一个输入2即可打开客户端了。具体流程可以参照下面这张图片!
个人觉得还是有点难度,老是记不住,看来需要多加练习才行!