服务器程序:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.IO;
using System.Threading;
namespace SocketServer
{
class Program
{
public void ProcessConnection(Object client)
{
TcpClient tcpClient = (TcpClient)client;
NetworkStream networkStream = tcpClient.GetStream();
BinaryReader br = new BinaryReader(networkStream);
BinaryWriter bw = new BinaryWriter(networkStream);
while (true)
{
try
{
string sReader = br.ReadString(); //接收消息
Console.WriteLine(sReader); //打印消息
string sWriter = "接收到消息";
bw.Write(sWriter); //向对方发送消息
}
catch
{
break;
}
}
}
static void Main()
{
Program p = new Program();
IPAddress localAddress; //IP地址
int port = 51888; //端口
TcpListener tcpListener; //监听套接字
TcpClient tcpClient;
IPAddress[] listenIp = Dns.GetHostAddresses("127.0.0.1");
localAddress = listenIp[0];
tcpListener = new TcpListener(localAddress, port);
tcpListener.Start(); //开始监听
while (true)
{
try
{
tcpClient = tcpListener.AcceptTcpClient();//每接受一个客户端则生成一个TcpClient
Thread thread = new Thread(p.ProcessConnection); //用一个线程单独处理这个连接
thread.Start(tcpClient);
}
catch
{
break;
}
}
}
}
}
客户端程序:
<pre name="code" class="csharp">using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.IO;
namespace SocketClient
{
class Program
{
static void Main()
{
TcpClient tcpClient;
tcpClient = new TcpClient(); //创建一个TcpClient对象,自动分配主机IP地址和端口号
tcpClient.Connect("127.0.0.1", 51888); //连接服务器,其IP和端口号为127.0.0.1和51888
if (tcpClient != null)
{
Console.WriteLine("连接服务器成功");
NetworkStream networkStream= tcpClient.GetStream();
BinaryReader br = new BinaryReader(networkStream);
BinaryWriter bw = new BinaryWriter(networkStream);
bw.Write("你好服务器,我是客户端"); //向服务器发送字符串
while (true)
{
try
{
string brString = br.ReadString(); //接收服务器发送的数据
if (brString != null)
{
Console.WriteLine("接收到服务器发送的数据{0}", brString);
}
}
catch
{
break; //接收过程中如果出现异常,将推出循环
}
}
}
Console.WriteLine("连接服务器失败");
}
}
}