//我们都知道游戏登录有客户端和服务器我们就拿这个举个例子吧
//服务器端
TcpListener listener = new TcpListener(8000);//8000是端口 ,自己定义
listener.Start();// 开始侦听传入的连接请求
while (true)//我们这是让服务器端一直运行
{
TcpClient client = listener.AcceptTcpClient();// 接受挂起的连接请求
Console.WriteLine(“有人连过来了”);
NetworkStream ns = client.GetStream();//得到流
StreamWriter sw = new StreamWriter(ns);
sw.WriteLine(“你和我已经连接上了 ,可以正常通信了”);
sw.Flush();
//博主是自己和自己连接的,所以我写了两个程序
//客户端
TcpClient client = new TcpClient("192.168.50.115", 8000);//“”里是服务器的Ip 端口也要一致
NetworkStream ns = client.GetStream();//得到服务器流
StreamReader sr = new StreamReader(ns);//读取
string str = sr.ReadLine();//接收
Console.WriteLine(str);//打印
***********还没跟新完哟 ,请慢慢等待
//运用 Socket实现网络连接
//创建实例
Socket socketClient = new Socket(SocketType.Stream, ProtocolType.Tcp);
IPAddress ip = IPAddress.Parse(“192.168.50.140”);
IPEndPoint point = new IPEndPoint(ip, 2333);
socketClient.Connect(point);
Thread thread = new Thread(Recive);
thread.Start(socketClient);
Thread sendThread = new Thread(SendThread);
sendThread.Start(socketClient);
}
static void SendThread(object obj)
{
Socket socket = obj as Socket;
while (true)
{
Console.WriteLine("老铁请说话:");
string message = Console.ReadLine();
byte[] buffter = Encoding.UTF8.GetBytes(message);
int temp = socket.Send(buffter);
}
}
/// <summary>
/// 接收消息
/// </summary>
/// <param name="o"></param>
static void Recive(object o)
{
Socket socket = o as Socket;
while (true)
{
//获取发送过来的消息容器
byte[] buffer = new byte[1024 * 1024 * 2];
int effective = socket.Receive(buffer);
string str = Encoding.UTF8.GetString(buffer, 0, effective);//把字节数组转换成字符串
Console.WriteLine("收到服务器发来的贺电为:" + str);
//var buffers = Encoding.UTF8.GetBytes("Server Return Message");
//socket.Send(buffers);
}
}
}
static void Main(string[] args)
{
Socket serverSocket = new Socket(SocketType.Stream, ProtocolType.Tcp);
IPAddress ip = IPAddress.Any;//0.0.0.0 意思是可以监听任意的ip地址
IPEndPoint point = new IPEndPoint(ip, 2333);
//把要监听的地址绑定到此套接字上(socket)
serverSocket.Bind(point);
//设置同时可以连接客户端的个数
serverSocket.Listen(10);
//利用线程后台执行监听,否则程序会假死
Thread thread = new Thread(Listen);
thread.Start(serverSocket);
}
/// <summary>
/// 监听连接
/// </summary>
/// <param name="o"></param>
static void Listen(object o)
{
Socket serverSocket = o as Socket;
while (true)
{
//时刻监听客户端向服务器发来的贺电,
Socket socket = serverSocket.Accept();
//?
//获取链接的IP地址
string socketIpoint = socket.RemoteEndPoint.ToString();
Console.WriteLine("客户端链接成功,地址为:"+ socketIpoint);
//开启一个新线程不停收、发消息
Thread thread = new Thread(Recive);
thread.Start(socket);
Thread sendThread = new Thread(SendThread);
sendThread.Start(socket);
}
}
static void SendThread(object obj)
{
Socket socket = obj as Socket;
while (true)
{
Console.WriteLine("服务器请说话:");
string message = Console.ReadLine();
byte[] buffter = Encoding.UTF8.GetBytes(message);
int temp = socket.Send(buffter);
}
}
/// <summary>
/// 接收消息
/// </summary>
/// <param name="o"></param>
static void Recive(object o)
{
Socket socket = o as Socket;
while (true)
{
//获取发送过来的消息容器
byte[] buffer = new byte[1024 * 1024 * 2];
int effective = socket.Receive(buffer);
string str = Encoding.UTF8.GetString(buffer, 0, effective);
Console.WriteLine("收到客户端发来的贺电为:"+str);
}
}
}
/*
TCP与UDP的区别:
1.基于连接与无连接;
2.对系统资源的要求(TCP较多,UDP少);
3.UDP程序结构较简单;
4.流模式与数据报模式 ;
5.TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。
*/
**//发送端的地址**
IPEndPoint udpPoint = new IPEndPoint(IPAddress.Parse("192.168.50.35"), 5500);
//创建数据报对象
UdpClient udpClient = new UdpClient(udpPoint);
//发送的信物
string sendMsg = "Hello UDP Server.";
//把信物处理成字节数组
byte[] sendData = Encoding.Default.GetBytes(sendMsg);
//构造发给谁的 ip 对象
IPEndPoint targetPoint = new IPEndPoint(IPAddress.Parse("192.168.50.35"), 5500);
//发送数据报出去
udpClient.Send(sendData, sendData.Length, targetPoint);
Console.WriteLine("----------发送成功");
static void Main(string[] args)
{
**//接受端的ip地址**
IPEndPoint udpPoint = new IPEndPoint(IPAddress.Parse("192.168.50.56"), 5500);
//初始化数据报对象
UdpClient udpClient = new UdpClient(udpPoint);
//初始化接受端的ip
IPEndPoint senderPoint = new IPEndPoint(IPAddress.Any, 0);
while (true)
{
// Console.WriteLine("去看看坑里有东西没");
//接受数据
byte[] recvData = udpClient.Receive(ref senderPoint);
IPEndPoint IP = senderPoint;
//处理接受到的数据
Console.WriteLine(IP.Address + "Receive Message:{0}", Encoding.Default.GetString(recvData));
}
}