tcplistener 用于服务器端 比一般的socket 要高级点,利用控制数据流来接收发送消息,不用再开启线程
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
namespace _024_tcplistener {
class Program {
static void Main(string[] args) {
//1,TcpListener对socket进行了一层封装,这个类里面自己会去创建socket对象
TcpListener listener = new TcpListener(IPAddress.Parse("192.168.0.112"),7788);
//2,开始进行监听
listener.Start();
//3,等待客户端连接过来
TcpClient client = listener.AcceptTcpClient();
//4,取得客户端发送过来的数据
NetworkStream stream = client.GetStream();//得到了一个网络流 从这个网络流可以取得客户端发送过来的数据
byte[] data = new byte[1024];//创建一个数据的容器,用来承接数据
while (true)
{
//0 表示从数组的哪个索引开始存放数据
//1024表示最大读取的字节数
int length = stream.Read(data, 0, 1024);//利用数据流读取数据
string message = Encoding.UTF8.GetString(data, 0, length);
Console.WriteLine("收到了消息:" + message);
}
stream.Close();
client.Close();
listener.Stop();//停止监听
Console.ReadKey();
}
}
}
——————————————————————————————————
sing System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net.Sockets;
namespace tcpclient
{
class Program
{
static void Main(string[] args)
{ //当我们创建出客户端的时候 就会跟服务器建立连接
TcpClient client = new TcpClient("192.168.0.112",7788);
// 通过网络流进行数据的交换
NetworkStream stream = client.GetStream();
// 持续发送消息
while(true)
{
string message = Console.ReadLine();
byte[] data = Encoding.UTF8.GetBytes(message);
//read是接受 Write 是写入数据
stream.Write(data, 0, data.Length);
}
//stream.Close();
}
}
}
_______________________________________
udp 更简单了 客户端和服务器一样
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
namespace _025_udpclient {
class Program {
static void Main(string[] args) {
//创建udpclient 绑定ip跟端口号
UdpClient udpClient = new UdpClient(new IPEndPoint(IPAddress.Parse("192.168.0.112"),7788));
while (true)
{
//接收数据 接收任何ip发过来的信息
IPEndPoint point = new IPEndPoint(IPAddress.Any, 0);
byte[] data = udpClient.Receive(ref point);//通过point确定数据来自哪个ip的哪个端口号 返回值是一个字节数组,就是我们的数据
string message = Encoding.UTF8.GetString(data);
Console.WriteLine("收到了消息:" + message);
}
udpClient.Close();
Console.ReadKey();
}
}
}
————————————————————————————