C#socket建⽴服务器并进⾏简单通信
注:本⽂为本⼈学习笔记,之前在蛮⽜⽹上发表的。
发现说明甚少,不过都是⽐较基础的操作,这⾥就不再说明了。包括两个.cs⽂件,⼀个是作为服务器端,⼀个是客户端。服务器端代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Net.Sockets;
namespace Csharp_socket编程_TCP协议
{
class Program
{
static void Main(string[] args)
{
//socket也是⼀个类,位于System.Net.Sockets下⾯
//1:创建⼀个socket
Socket tcpServer = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//2:绑定Ip地址和端⼝号117.25.188.1
IPAddress ipaddress = new IPAddress(new byte[]{117,25,190,168});
EndPoint point = new IPEndPoint(ipaddress,7788);//IPEndPoint类是对ip端⼝做了⼀层封装的类
tcpServer.Bind(point);//向操作系统申请⼀个可⽤的ip地址和端⼝号⽤于通信
//3:开始监听(等待客户端的连接)
Console.WriteLine("开始监听");/
tcpServer.Listen(100);//设置最⼤的连接数
Socket ClientSocket = tcpServer.Accept();//暂停当前线程知道有客户端连接进来才进⾏下⾯的代码,返回客户端的socket
Console.WriteLine("有客户端连⼊");///
//4:使⽤返回的socket向客户端发送消息
string welcome = "welcome to you";
Console.WriteLine("向客户端发送消息" + welcome);///
byte[] str = Encoding.UTF8.GetBytes(welcome);//利⽤这个⽅法将string型转化为byte型数组
ClientSocket.Send(str);//向客户端发送欢迎信息
//5:接收客户端发来的消息
byte[] data = new byte[1000];
int length = ClientSocket.Receive(data);
string receiveMessage = Encoding.UTF8.GetString(data, 0, length);
Console.WriteLine("收到客户端发来的消息:"+receiveMessage);
Console.ReadKey();
}
}
}
客户端代码:
writeline用什么替代using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Net.Sockets;
namespace Csharp_socket编程_TCP协议_客户端
{
class Program
{
static void Main(string[] args)
{
//1:创建socket
Socket tcpClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//2:向服务器端发送连接请求
Console.WriteLine("向服务器端发送连接请求");//
IPAddress ipaddress = IPAddress.Parse("117.25.190.168");//IPAddress.Parse可以把string类型的ip地址转化为ipAddress型 EndPoint point = new IPEndPoint(ipaddress, 7788);//通过ip地址和端⼝号定位要连接的服务器端
tcpClient.Connect(point);//建⽴连接
Console.WriteLine("连接到服务器");//
//3:接收服务器端发来的消息
byte[] data = new byte[1000];
int length = tcpClient.Receive(data);//这⾥的byte数组⽤来接收数据,返回值length表⽰接收的数据长度
string message = Encoding.UTF8.GetString(data, 0, length);//把字节数组转化为字符串
Console.WriteLine("接收到服务器端的消息:" + message);
//4:向服务器端发送消息
string messageToServer = Console.ReadLine();
Console.WriteLine("向服务器端发送消息:" + messageToServer);//
tcpClient.Send(Encoding.UTF8.GetBytes(messageToServer));//向服务器端发送消息
Console.ReadKey();
}
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论