二、C#网络编程2(TcpListener,TcpClient)

在与服务端的连接建立以后,我们就可以通过此连接来发送和接收数据。端口与端口之间以流(Stream)的形式传输数据,因为几乎任何对象都可以保存到流中,所以实际上可以在客户端与服务端之间传输任何类型的数据。

对客户端来说,往流中写入数据,即为向服务器传送数据;从流中读取数据,即为从服务端接收数据。

对服务端来说,往流中写入数据,即为向客户端发送数据;从流中读取数据,即为从客户端接收数据。

同步传输字符串

我们现在考虑这样一个任务:

客户端打印一串字符串,然后发往服务端,服务端先输出它,然后将它改为大写,再回发到客户端,客户端接收到以后,最后再次打印一遍它。

我们将它分为两部分:1、客户端发送,服务端接收并输出;2、服务端回发,客户端接收并输出。

一、客户端发送,服务端接收并输出

1、服务端程序

    用 TcpClient 上的 GetStream() 方法,来发送接收数据

using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;
namespace ServerConsole
{class Program{static void Main(string[] args){Console.WriteLine("服务器运行!");IPAddress ip = new IPAddress(new byte[] { 127,0,0,1});TcpListener listener = new TcpListener(ip, 8500); //ip为服务器IP地址,port为监听的端口            listener.Start();Console.WriteLine("开始侦听。。"); TcpClient remoteClient = listener.AcceptTcpClient();Console.WriteLine("有客户端连接! {0}<----{1}", remoteClient.Client.LocalEndPoint, remoteClient.Client.RemoteEndPoint);NetworkStream streamToClient = remoteClient.GetStream();//用于发送和接收数据        const int BufferSize = 8192;//缓存大小,8192字节           byte[] buffer = new