您的位置:首页 > 理论基础 > 计算机网络

网络编程资料总结(一)----TcpListener和TcpClient的基本用法

2009-12-02 09:49 671 查看
服务器端创建 Socket后,在客户端,你将可以通过Connect方法连接到指定的服务器,客户端也可以通过Write方法向远程服务器发送数据,而后可以通过 Receive从服务端接收数据;而在服务器端,你需要使用Bind方法绑定所指定的接口使Socket与一个本地终结点相联,并通过Listen方法侦听该接口上的请求,当侦听到用户端的连接时,调用Accept完成连接的操作,创建新的Socket以处理传入的连接请求。
Socket完成后,使用Close方法关闭Socket。

服务器端程序:
using System;
using System.Collections.Generic;
using System.Text;
using System.Net.Sockets;
using System.Threading;
using System.Net;

namespace tcpchater
{
class tcpserver
{
static void Main(string[] args)
{
try
{
//初始化监听,端口为
TcpListener myList = new TcpListener(IPAddress.Parse("127.0.0.1"), 8001);

//开始监听服务器端口
myList.Start();

Console.WriteLine("启动服务器端,端口服务...");
Console.WriteLine("本地节点为:" + myList.LocalEndpoint);//LocalEndpoint属性标识正用于侦听传入客户端连接请求的本地网络接口和端口号
Console.WriteLine("等待客户端连接...");

//等待处理接入连接请求
Socket s = myList.AcceptSocket();

//新建立的连接用套接字s表示
Console.WriteLine("客户端连接来自" + s.RemoteEndPoint + " 已上线.");

System.Text.UTF8Encoding utf8 = new UTF8Encoding(); //可以处理中文
//接收客户信息
byte[] b = new byte[2048];
int k = s.Receive(b);
Console.Write("客户端说:" + utf8.GetString(b, 0, k));
Console.WriteLine();
Thread.Sleep(3000);//停秒

Console.Write("服务器端说:");
//处理客户端请求,给客户端回应
string str = Console.ReadLine();
s.Send(utf8.GetBytes(str));
Console.WriteLine("已发送回应信息");

//释放资源,结束监听
s.Close();
myList.Stop();
}
catch (Exception e)
{
Console.WriteLine("错误..." + e.StackTrace);
}
}
}
}

客户端程序
using System;
using System.Collections.Generic;
using System.Text;
using System.Net.Sockets;
using System.IO;

namespace tcpclient
{
class tcpclient
{
static void Main(string[] args)
{
try
{

//建立客户端套接字
TcpClient tcpclnt = new TcpClient();
Console.WriteLine("正在连接服务器...");

//连接服务器
tcpclnt.Connect("127.0.0.1", 8001);

//得到客户端的流
NetworkStream stm = tcpclnt.GetStream();

Console.WriteLine("已连接到服务器");
Console.Write("客户端说:");
string str = Console.ReadLine();//输入说话内容
//发送字符串
System.Text.UTF8Encoding utf8 = new UTF8Encoding(); //可以处理中文
byte[] ba = utf8.GetBytes(str);
Console.WriteLine("数据已经传送到服务器,等待服务器回应...");
stm.Write(ba, 0, ba.Length);
//接收从服务器返回的信息
byte[] bb = new byte[2048];
int k = stm.Read(bb, 0, 100);
//输出服务器端返回的信息
Console.WriteLine("服务器说:"+ utf8.GetString(bb, 0, k));
tcpclnt.Close();
}
catch (Exception e)
{
Console.WriteLine("错误..." + e.StackTrace);
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: