socket编程
tcp协议
服务器端
使用socket类,先包含
using System.Net.Sockets;
传递参数
Socket tcp = new Socket(AddressFamily.InterNetwork, SocketType.Stream,ProtocolType.Tcp);
第一个参数表示使用inter网络,第二个表示用什么流来传输,第三个表示使用什么协议
局域网ip一般是192.168.x.xx
using System.Net;
EndPoint point = new IPEndPoint();
//传递两个参数,一个是IPAddress 的对象,一个是端口号
IPAddress iPAddress = new IPAddress(new byte[] { 192, 168, 31, 70 });
只需传递一个byte类型的数组,数组里分别写上ip的四位数字,0·255之间
Encoding.UTF8.GetBytes(massge);对字符串做编码,返回字符串的字节数组
使用send方法传递字节数据,使用receive方法获取字节数据
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)
{
//创建socket
Socket tcp = new Socket
(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//绑定IP和端口号 192.168.31.70
IPAddress iPAddress = new IPAddress(new byte[] { 192, 168, 31, 70 });
EndPoint point = new IPEndPoint(iPAddress, 2233);
//对Ip+端口做了一层封装类
//EndPoint是一个抽象类,IPEndPoint去实现这个抽象类
tcp.Bind(point);//向操作系统申请一个可用的ip和端口号用来做通信
//开始监听,等待客户端做连接
tcp.Listen(100);//参数是最大连接数
Socket backSocket = tcp.Accept();//会让当前线程,直到接收到客户端连接。
//将socket通讯由tcp交给backScoket
//使用返回的socket和客户端做通讯
string massge = "Hello Word";
byte[] massgeBytes = Encoding.UTF8.GetBytes(massge);
//对字符串做编码,得到一个字符串的字节数组
backSocket.Send(massgeBytes);//只能传输一个byte数组,所以我们得把这个字符串转成一个byte数组
byte[] data = new byte[1024];
int length = backSocket.Receive(data);
string res = Encoding.UTF8.GetString(data, 0, length);
Console.WriteLine(res);
}
}
}
客户端
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Net.Sockets;
namespace learn
{
class Program
{
static void Main(string[] args)
{
//创建一个socket
Socket tcp = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//客户端不需要去监听
//发起建立连接的请求
IPAddress iPAddress = IPAddress.Parse("192.168.31.70");
//Parse可以把一个字符串的ip地址转化成一个ipaddress的对象
EndPoint endPoint = new IPEndPoint(iPAddress, 2233);
tcp.Connect(endPoint);//通过ip+端口定位一个要连接的服务端
byte[] data = new byte[1024];
int length = tcp.Receive(data);//传递一个byte数组用来接收数据
//用来接收消息
//length表示接受到多少数据
string massegeBack = Encoding.UTF8.GetString(data, 0, length);
//默认情况下会把所以byte的数据进行转化,
//但我们只需要转换接受到的数据,
//所以0,length代表从0开始到length为止的数据长度
//也就是我们接受到的数据
Console.WriteLine(length);//这里的长度一般都是字符的长度
Console.WriteLine(massegeBack);
//向服务器端发送消息
string toMassge = Console.ReadLine();//用户输入
tcp.Send(Encoding.UTF8.GetBytes(toMassge));
//把字符串转换成字节数组发送到服务器端
Console.ReadKey();
}
}
}
Unity聊天室
需要插件NGUI
NGUI v3.12.0.rar - 蓝奏云文件大小:12.5 M|https://wwm.lanzouw.com/iUxJD001acwb