当前位置: 代码迷 >> 综合 >> TcpListener/TcpClient同步编程01
  详细解决方案

TcpListener/TcpClient同步编程01

热度:27   发布时间:2024-02-22 23:34:24.0

在使用TcpListener/TcpClient同步编程之前,要引入两个命名空间

using System.Net;
using System.Net.Sockets;

服务器代码示例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;namespace Net
{
    class Program{
    static void Main(string[] args){
    //服务端对端口进行侦听:TcpListener listener = new TcpListener(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 10001));listener.Start();//检测来自客户端的连接请求Console.WriteLine("等待连接请求...........");TcpClient remoteClient = listener.AcceptTcpClient();Console.WriteLine("连接到客户端!!!");//建立和连接的客户端的数据流(传输数据)NetworkStream streamFromClient = remoteClient.GetStream();//创建缓存区byte[] buffer = new byte[8096];//每次读取缓存中的大小int byteRead;try{
    //为了保证数据的完整性以及安全性锁定数据流//读取客户端发送来的数据lock (streamFromClient){
    byteRead = streamFromClient.Read(buffer, 0, 8096);Console.WriteLine(DateTime.Now +":收到来自客户端的消息:"+Encoding.Unicode.GetString(buffer, 0, byteRead));}//向连接的客户端发送数据lock (streamFromClient){
    //buffer为发送的字符数组streamFromClient.Write(buffer,0, buffer.Length);                  }}catch (Exception e){
    Console.WriteLine(e.Message);}streamFromClient.Dispose();remoteClient.Close();Console.ReadLine();}}
}

客户端代码示例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;namespace Client
{
    class Program{
    static void Main(string[] args){
    TcpClient tcpClient = new TcpClient();tcpClient.Connect("127.0.0.1", 10001);if (tcpClient.Connected){
    NetworkStream streamFromServer = tcpClient.GetStream();byte[] buffer = Encoding.Unicode.GetBytes("hello world Unity");int byteRead;try{
    lock (streamFromServer){
    //发送到服务器streamFromServer.Write(buffer, 0, buffer.Length);buffer = new byte[8096];}lock (streamFromServer){
    byteRead = streamFromServer.Read(buffer, 0, 8096);Console.WriteLine(DateTime.Now + "收到来自服务器的消息:" + Encoding.Unicode.GetString(buffer, 0, byteRead));}}catch (Exception e){
    Console.WriteLine(e.Message);}}Console.ReadLine();}}
}