C#IPTCP客户端与服务端
3.        服务端
using System.Net.Sockets;
namespace server
{
class Program
{
static void Main(string[] args)
{
try
{
IPAddress Ip = IPAddress.Parse("127.0.0.1");
/
/IPAddress提供⽹际协议地址的类,Parse将IP地址字符串转换为IPAddress的实例
TcpListener TcpList = new TcpListener(Ip, 8888);
//TcpListener⽹络侦听类,从TCP⽹络客户端侦听连接,TcpListener (参数1,参数2),参数1表⽰本地IP地址,参数2表⽰⽤来侦听传⼊的端⼝连接                TcpList.Start();
//启动对挂起连接数的传⼊链接请求的侦听
Console.WriteLine(“Server start!”);
Console.WriteLine(“Ip address:” + TcpList.LocalEndpoint);
//LocalEndpoint获取服务端(即本地)地址与端⼝等信息
Console.WriteLine(“Wait”);
Socket Soc = TcpList.AcceptSocket();
//AcceptSocket表⽰接受挂起的连接请求,Socket为套接字接⼝的类
Console.WriteLine("Received Connection:" + Soc.RemoteEndPoint);
//RemoteEndPoint获取客户端地址与端⼝等信息
byte[] b = new byte[100];
int k = Soc.Receive(b);
//Soc.Receive(b)从socket接收数据,将数据存⼊接收缓冲区列表中,k的值为该数据的长度
Console.WriteLine(“Received data from client:”);
for (int i = 0; i < k; i++)
Console.Write(Convert.ToChar(b[i]));
//Convert.ToChar(b[i])将数组b转换基本数据类型为char的类型并输出
ASCIIEncoding AS = new ASCIIEncoding();
//ASCIIEncoding表⽰Unicode字符的ASCII字符编码类
Soc.Send(AS.GetBytes(“Received data!”));
/
/Soc.Send向客户端发送数据,AS.GetBytes()获得括号中字符串的bytes值
Soc.Close();
//关闭连接并释放所有关联的资源
TcpList.Stop();
//关闭侦听
Console.ReadLine();
//等待输⼊,起到暂停的作⽤
}
catch(Exception e)
{
Console.WriteLine("Error!" + e.StackTrace);
/
/获取当前异常发⽣时调⽤堆栈上的帧的字符串
}
}
}
}
4.        客户端
writeline特点
using System.IO;
using System.Net.Sockets;
namespace client
{
class Program
{
static void Main(string[] args)
{
try
{
TcpClient TcpClient = new TcpClient();
//TcpClient为TCP⽹络服务提供客户端连接的类
TcpClient.Connect("127.0.0.1", 8888);
//Connect⽅法使⽤指定的IP地址和端⼝号将客户端连接到远程TCP主机
Console.WriteLine("Connect Complete");
Console.WriteLine("Input string:");
String str = Console.ReadLine();
//定义字符串str变量,保存输⼊的字符
Stream stm = TcpClient.GetStream();
//定义数据流,⽤于发送和接收数据
ASCIIEncoding AS = new ASCIIEncoding();
byte[] b = AS.GetBytes(str);
//将字符串转换为byte类型
stm.Write(b, 0, b.Length);
//Write(参数1,参数2,参数3)表⽰向服务端发送字符串,参数1指将此数组复制到当前流,参数2指从零开始的字节偏移量,参数3指要写⼊当前流的字节数                Console.WriteLine("Send Complete");
byte[] bb = new byte[100];
int k = stm.Read(bb, 0, 100);
//stm.Read在当前流中读⼊服务端发来的响应信息,其参数与Write⽅法参数⼀致,k值为读⼊字符串的长度
for (int i = 0; i < k; i++)
Console.Write(Convert.ToChar(bb[i]));
TcpClient.Close();
//释放TcpClient实例,并不关闭基础连接
Console.ReadLine();
}
catch (Exception e)
{
Console.WriteLine("Error!" + e.StackTrace);
}
}
}
}
5.    测试
运⾏服务端,提⽰服务端已启动,IP地址为127.0.0.1,使⽤的端⼝为8888,等待客户端的连接
运⾏客户端,提⽰连接服务端完成,等待输⼊需发送的信息
客户端运⾏后,在服务端上出现客户端地址为127.0.0.1,使⽤的端⼝为2094
输⼊信息hello后回车发送,提⽰发送完成,并收到由服务器发来的确认接收信息
服务器接收到来⾃客户端发送的hello

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。