读书人

Socket兑现客户端和服务端的文件传

发布时间: 2012-10-25 10:58:57 作者: rapoo

Socket——实现客户端和服务端的文件传送

?

    Socket 概念
socket的英文原义是“孔”或“插座”。作为4BDS UNIX的进程通信机制,取后一种意思。通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。Socket正如其英文原意那样,象一个多孔插座。一台主机犹如布满各种插座的房间,每个插座有一个编号,有的插座提供220伏交流电, 有的提供110伏交流电,有的则提供有线电视节目。 客户软件将插头插到不同编号的插座,就可以得到不同的服务。
    Socket 实现原理Demo

下面是示例程序的简单步骤说明

服务器端:

第一步:用指定的端口号和服务器的ip建立一个EndPoint对像;

第二步:建立一个Socket对像;

第三步:用socket对像的Bind()方法绑定EndPoint;

第四步:用socket对像的Listen()方法开始监听;

第五步:接受到客户端的连接,用socket对像的Accept()方法创建新的socket对像用于和请求的客户端进行通信;

第六步:通信结束后一定记得关闭socket;

Socket——兑现客户端和服务端的文件传送代码:
Socket——兑现客户端和服务端的文件传送using?System;
Socket——兑现客户端和服务端的文件传送using?System.Collections.Generic;
Socket——兑现客户端和服务端的文件传送using?System.Text;
Socket——兑现客户端和服务端的文件传送using?System.Net;
Socket——兑现客户端和服务端的文件传送using?System.Net.Sockets;
Socket——兑现客户端和服务端的文件传送
Socket——兑现客户端和服务端的文件传送namespace?server
Socket——兑现客户端和服务端的文件传送{
Socket——兑现客户端和服务端的文件传送????class?Program
Socket——兑现客户端和服务端的文件传送????{
Socket——兑现客户端和服务端的文件传送????????static?void?Main(string[]?args)
Socket——兑现客户端和服务端的文件传送????????{
Socket——兑现客户端和服务端的文件传送????????????int?port?=?2000;
Socket——兑现客户端和服务端的文件传送????????????string?host?=?"127.0.0.1";
Socket——兑现客户端和服务端的文件传送
Socket——兑现客户端和服务端的文件传送
Socket——兑现客户端和服务端的文件传送????????????///创建终结点(EndPoint)
Socket——兑现客户端和服务端的文件传送????????????IPAddress?ip??=?IPAddress.Parse(host);//把ip地址字符串转换为IPAddress类型的实例
Socket——兑现客户端和服务端的文件传送????????????IPEndPoint?ipe?=?new?IPEndPoint(ip,?port);//用指定的端口和ip初始化IPEndPoint类的新实例
Socket——兑现客户端和服务端的文件传送
Socket——兑现客户端和服务端的文件传送
Socket——兑现客户端和服务端的文件传送????????????///创建socket并开始监听
Socket——兑现客户端和服务端的文件传送????????????Socket?s = new?Socket(AddressFamily.InterNetwork,?SocketType.Stream,?ProtocolType.Tcp);//创建一个socket对像,如果用udp协议,则要用SocketType.Dgram类型的套接字
Socket——兑现客户端和服务端的文件传送????????????s.Bind(ipe);//绑定EndPoint对像(2000端口和ip地址)
Socket——兑现客户端和服务端的文件传送????????????s.Listen(0);//开始监听
Socket——兑现客户端和服务端的文件传送????????????Console.WriteLine("等待客户端连接Socket——兑现客户端和服务端的文件传送");
Socket——兑现客户端和服务端的文件传送
Socket——兑现客户端和服务端的文件传送
Socket——兑现客户端和服务端的文件传送????????????///接受到client连接,为此连接建立新的socket,并接受信息
Socket——兑现客户端和服务端的文件传送????????????Socket?temp?=?s.Accept();//为新建连接创建新的socket
Socket——兑现客户端和服务端的文件传送????????????Console.WriteLine("建立连接");
Socket——兑现客户端和服务端的文件传送????????????string?recvStr?=?"";
Socket——兑现客户端和服务端的文件传送????????????byte[]?recvBytes?=?new?byte[1024];
Socket——兑现客户端和服务端的文件传送????????????int?bytes;
Socket——兑现客户端和服务端的文件传送????????????bytes?=?temp.Receive(recvBytes,?recvBytes.Length,?0);//从客户端接受信息
Socket——兑现客户端和服务端的文件传送????????????recvStr?+=?Encoding.ASCII.GetString(recvBytes,?0,?bytes);
Socket——兑现客户端和服务端的文件传送
Socket——兑现客户端和服务端的文件传送
Socket——兑现客户端和服务端的文件传送????????????///给client端返回信息
Socket——兑现客户端和服务端的文件传送????????????Console.WriteLine("server?get?message:{0}",?recvStr);//把客户端传来的信息显示出来
Socket——兑现客户端和服务端的文件传送????????????string?sendStr?=?"ok!Client?send?message?successful!";
Socket——兑现客户端和服务端的文件传送????????????byte[]?bs?=?Encoding.ASCII.GetBytes(sendStr);
Socket——兑现客户端和服务端的文件传送????????????temp.Send(bs,?bs.Length,?0);//返回信息给客户端
Socket——兑现客户端和服务端的文件传送????????????temp.Close();
Socket——兑现客户端和服务端的文件传送????????????s.Close();
Socket——兑现客户端和服务端的文件传送????????????Console.ReadLine();
Socket——兑现客户端和服务端的文件传送????????}
Socket——兑现客户端和服务端的文件传送???????
Socket——兑现客户端和服务端的文件传送????}
Socket——兑现客户端和服务端的文件传送}
Socket——兑现客户端和服务端的文件传送
server结果:
Socket——兑现客户端和服务端的文件传送

客户端:

第一步:用指定的端口号和服务器的ip建立一个EndPoint对像;

第二步:建立一个Socket对像;

第三步:用socket对像的Connect()方法以上面建立的EndPoint对像做为参数,向服务器发出连接请求;

第四步:如果连接成功,就用socket对像的Send()方法向服务器发送信息;

第五步:用socket对像的Receive()方法接受服务器发来的信息?;

第六步:通信结束后一定记得关闭socket;

Socket——兑现客户端和服务端的文件传送代码:
Socket——兑现客户端和服务端的文件传送using?System;
Socket——兑现客户端和服务端的文件传送using?System.Collections.Generic;
Socket——兑现客户端和服务端的文件传送using?System.Text;
Socket——兑现客户端和服务端的文件传送using?System.Net;
Socket——兑现客户端和服务端的文件传送using?System.Net.Sockets;
Socket——兑现客户端和服务端的文件传送
Socket——兑现客户端和服务端的文件传送namespace?Client
Socket——兑现客户端和服务端的文件传送{
Socket——兑现客户端和服务端的文件传送????class?Program
Socket——兑现客户端和服务端的文件传送????{
Socket——兑现客户端和服务端的文件传送????????static?void?Main(string[]?args)
Socket——兑现客户端和服务端的文件传送????????{
Socket——兑现客户端和服务端的文件传送????????????try
Socket——兑现客户端和服务端的文件传送????????????{
Socket——兑现客户端和服务端的文件传送????????????????int?port?=?2000;
Socket——兑现客户端和服务端的文件传送????????????????string?host?=?"127.0.0.1";
Socket——兑现客户端和服务端的文件传送
Socket——兑现客户端和服务端的文件传送????????????????///创建终结点EndPoint
Socket——兑现客户端和服务端的文件传送????????????????IPAddress?ip?=?IPAddress.Parse(host);
Socket——兑现客户端和服务端的文件传送????????????????//IPAddress?ipp?=?new?IPAddress("127.0.0.1");
Socket——兑现客户端和服务端的文件传送????????????????IPEndPoint?ipe?=?new?IPEndPoint(ip,?port);//把ip和端口转化为IPEndpoint实例
Socket——兑现客户端和服务端的文件传送
Socket——兑现客户端和服务端的文件传送
Socket——兑现客户端和服务端的文件传送????????????????///创建socket并连接到服务器
Socket——兑现客户端和服务端的文件传送????????????????Socket?c?=?new?Socket(AddressFamily.InterNetwork,?SocketType.Stream,?ProtocolType.Tcp);//创建Socket
Socket——兑现客户端和服务端的文件传送????????????????Console.WriteLine("Conneting…");
Socket——兑现客户端和服务端的文件传送????????????????c.Connect(ipe);//连接到服务器
Socket——兑现客户端和服务端的文件传送
Socket——兑现客户端和服务端的文件传送
Socket——兑现客户端和服务端的文件传送????????????????///向服务器发送信息
Socket——兑现客户端和服务端的文件传送????????????????string?sendStr?=?"hello!This?is?a?socket?test";
Socket——兑现客户端和服务端的文件传送????????????????byte[]?bs?=?Encoding.ASCII.GetBytes(sendStr);//把字符串编码为字节
Socket——兑现客户端和服务端的文件传送????????????????Console.WriteLine("Send?Message");
Socket——兑现客户端和服务端的文件传送????????????????c.Send(bs,?bs.Length,?0);//发送信息
Socket——兑现客户端和服务端的文件传送
Socket——兑现客户端和服务端的文件传送
Socket——兑现客户端和服务端的文件传送????????????????///接受从服务器返回的信息
Socket——兑现客户端和服务端的文件传送????????????????string?recvStr?=?"";
Socket——兑现客户端和服务端的文件传送????????????????byte[]?recvBytes?=?new?byte[1024];
Socket——兑现客户端和服务端的文件传送????????????????int?bytes;
Socket——兑现客户端和服务端的文件传送????????????????bytes?=?c.Receive(recvBytes,?recvBytes.Length,?0);//从服务器端接受返回信息
Socket——兑现客户端和服务端的文件传送????????????????recvStr?+=?Encoding.ASCII.GetString(recvBytes,?0,?bytes);
Socket——兑现客户端和服务端的文件传送????????????????Console.WriteLine("client?get?message:{0}",?recvStr);//显示服务器返回信息
Socket——兑现客户端和服务端的文件传送
Socket——兑现客户端和服务端的文件传送????????????????///一定记着用完socket后要关闭
Socket——兑现客户端和服务端的文件传送????????????????c.Close();
Socket——兑现客户端和服务端的文件传送
Socket——兑现客户端和服务端的文件传送????????????}
Socket——兑现客户端和服务端的文件传送????????????catch?(ArgumentNullException?e)
Socket——兑现客户端和服务端的文件传送????????????{
Socket——兑现客户端和服务端的文件传送????????????????Console.WriteLine("argumentNullException:?{0}",?e);
Socket——兑现客户端和服务端的文件传送????????????}
Socket——兑现客户端和服务端的文件传送????????????catch?(SocketException?e)
Socket——兑现客户端和服务端的文件传送????????????{
Socket——兑现客户端和服务端的文件传送????????????????Console.WriteLine("SocketException:{0}",?e);
Socket——兑现客户端和服务端的文件传送????????????}
Socket——兑现客户端和服务端的文件传送
Socket——兑现客户端和服务端的文件传送????????????Console.WriteLine("Press?Enter?to?Exit");
Socket——兑现客户端和服务端的文件传送????????}
Socket——兑现客户端和服务端的文件传送????}
Socket——兑现客户端和服务端的文件传送}
Socket——兑现客户端和服务端的文件传送
Client端结果:
Socket——兑现客户端和服务端的文件传送

?

读书人网 >编程

热点推荐