C#.net套接字C/S第一步(没测试过,有时间测试接着写第二步)

//客户端发送数据,等待服务器数据并接收

public static string Client(string cparam,int serverStrNum,string StrIp,string StrPort)
{

            //
            TcpClient tcpclnt = new TcpClient();
            tcpclnt.Connect(StrIp, int.Parse(StrPort));

            //
            NetworkStream stm = tcpclnt.GetStream();

            //

            UTF8Encoding asen = new UTF8Encoding();
            byte[] ba = asen.GetBytes(cparam);
            if (stm.CanWrite)
                stm.Write(ba, 0, ba.Length);
            //
            byte[] bb = new byte[serverStrNum];
            while (stm.Read(bb, 0, serverStrNum).ToString().Trim()=="") { }
            if (stm.DataAvailable)
                stm.Read(bb, 0,serverStrNum);

            //
            string req = System.Text.Encoding.UTF8.GetString(bb);

            //

            stm.Close();
            tcpclnt.Close();
            return req;
}

//服务器类

public class Server
{

                //
                bool ServerRun = true;

                //
                TcpListener tcpListener = null;

                //
                Thread SerTh;

                //
                IPEndPoint SerIpendPoint;

                //

                string[] parameter;
public static string Server(string sparam,string ip,string port)
{

                //
                SerIpendPoint= new IPEndPoint(IPAddress.Parse(ip), Int32.Parse(port));
                tcpListener = new TcpListener(SerIpendPoint);
                tcpListener.Start();

                //
                SerTh = new Thread(new ThreadStart(ServerWorking));
                ServerRun = true;
                SerTh.Start();
}
public bool StopServer()
{
            try
            {
                ServerRun = false;
                tcpListener.Stop();
                SerTh.Abort();
                return (true);
            }
            catch
            {
                return (false);
            }
}
private void ServerWorking()
{
            try
            {
                while (ServerRun)
                {
                    Socket QS;
                    QS = TcpListener.AcceptSocket();
                    Byte[] Stream = new Byte[1024];
                    QS.Receive(Stream);

                    //
                    string clientStr = System.Text.Encoding.UTF8.GetString(Stream);
                    string serverStr = DataConvert(clientStr);

                    //
                    UTF8Encoding SendByte = new UTF8Encoding();
                    QS.Send((SendByte.GetBytes(serverStr)));
                    //string FileUrl;
                    //QS.SendFile(FileUrl);
                    QS.Close();
                }
            }
            catch { }

}

private string  DataConvert(string clientStr);

{

            string serverStr=clientStr;

            return serverStr;

}
        private string[] SplitParam(string str,int ParamNum)
        {
            parameter = new string[ParamNum];//保存接收的参数
            for (int i = 0; i < ParamNum; i++)
            {
                parameter[i] = "";
            }
            int j = 0;//参数指针
            for (int i = 0; i < str.Length; i++)
            {
                if (str[i] != ';')
                {
                    if (str[i] == '/0')
                    {
                        break;
                    }
                    parameter[j] += str[i].ToString().Trim();
                }
                else
                {
                    j++;
                }
            }

         return  parameter;
        }
}

 

时间: 2024-09-15 07:44:17

C#.net套接字C/S第一步(没测试过,有时间测试接着写第二步)的相关文章

《UNIX网络编程 卷1:套接字联网API(第3版)》——8.11 UDP的connect函数

8.11 UDP的connect函数 在8.9节结尾我们提到,除非套接字已连接,否则异步错误是不会返回到UDP套接字的.我们确实可以给UDP套接字调用connect(4.3节),然而这样做的结果却与TCP连接大相径庭:没有三路握手过程.内核只是检查是否存在立即可知的错误(例如一个显然不可达的目的地),记录对端的IP地址和端口号(取自传递给connect的套接字地址结构),然后立即返回到调用进程. 给connect函数重载(overload)UDP套接字的这种能力容易让人混淆.如果使用约定,令so

《Python核心编程(第3版)》——2.3 套接字:通信端点

2.3 套接字:通信端点 本节将介绍套接字(socket),给出有关其起源的一些背景知识,并讨论各种类型的套接字.最后,将讲述如何利用它们使运行在不同(或相同)计算机上的进程相互通信. 2.3.1 套接字 套接字是计算机网络数据结构,它体现了上节中所描述的"通信端点"的概念.在任何类型的通信开始之前,网络应用程序必须创建套接字.可以将它们比作电话插孔,没有它将无法进行通信. 套接字的起源可以追溯到20世纪70年代,它是加利福尼亚大学的伯克利版本UNIX(称为BSD UNIX)的一部分.

Java套接字编程(下)

自寻址套接字(Datagram Sockets) ,因为使用流套接字的每个连接均要花费一定的时间,要减少这种开销,网络API提供了第二种套接字:自寻址套接字(datagram socket),自寻址使用UDP发送寻址信息(从客户程序到服务程序或从服务程序到客户程序),不同的是可以通过自寻址套接字发送多IP信息包,自寻址信息包含在自寻址包中,此外自寻址包又包含在IP包内,这就将寻址信息长度限制在60000字节内.图2显示了位于IP包内的自寻址包的自寻址信息. 与TCP保证信息到达信息目的地的方式不

【网络编程2】Java数据报套接字

这篇博文是本文学习<Java网络程序设计>书中第5章数据报套接字的学习总结.初学者网友学习这篇Java数据报套接字文章,如果难于理解文章前面理论部分,可以先运行后面的程序,边看运行后面的程序边理解前面的原理,这对初学者是最好的方法.所有源代码都在文章后面我的github链接代码中. --惠州学院13网络工程 吴成兵 20160609 目录 1 目录 1 一 数据报套接字概述 二 DatagramPacket 21 创建DatagramPacket对象 211 创建的DatagramPacket

Java套接字编程(下)(1)

自寻址套接字(Datagram Sockets) ,因为使用流套接字的每个连接均要花费一定的时间,要减少这种开销,网络API提供了第二种套接字:自寻址套接字(datagram socket),自寻址使用UDP发送寻址信息(从客户程序到服务程序或从服务程序到客户程序),不同的是可以通过自寻址套接字发送多IP信息包,自寻址信息包含在自寻址包中,此外自寻址包又包含在IP包内,这就将寻址信息长度限制在60000字节内.图2显示了位于IP包内的自寻址包的自寻址信息. 与TCP保证信息到达信息目的地的方式不

利用套接字机制实现Flash与数据库连接

数据|数据库|数据库连接 无论对于Java开发者还是.NET开发者来说,在Flash中创建一个数据库连接都不是件简单的事情.由于解决这一问题需要费不少的周折,所以本文中我们通过建立一个XMLSocket类来帮助实现这一技术. 一. 简介 对于一位具有传统型客户-服务器背景的开发人员来说,转入到ActionScript开发并把Flash连接到一个数据库肯定需要费不少的周折.在.NET或Java世界中,通过直接从应用程序中调用数据库,你仅需要打开一个到数据库的连接并且执行数据库操作即可:而在Flas

thrift的TTransport层的堵塞的套接字I/O传输类TSocket

本节将介绍第一个实现具体传输功能的类TSocket,这个类是基于TCP socket实现TTransport的接口 .下面具体介绍这个类的相关函数功能实现. 1.构造函数 分析一个类的功能首先看它的定义和构 造函数实现,先看看它的定义:  class TSocket : public TVirtualTransport<TSocket> { ......} 由定义可以看书TSocket继承至虚拟传输类,并且把 自己当做模板参数传递过去,所以从虚拟传输类继承下来的虚拟函数(如read_virt)

UNIX网络编程:套接字选项(SOL_SOCKET级别)

#include <sys/socket.h> int setsockopt( int socket, int level, int option_name,const void *option_value, size_t option_len); 第一个参数socket是套接字描述符. 第二个参数level是被设置的选项的级别,如果想要在套接字级别上设置选项,就必须把level设置为SOL_SOCKET. 第三个参数 option_name指定准备设置的选项,option_name可以有哪些

UNIX网络编程:套接字选项(心跳检测、绑定地址复用)

01./* 设置套接字选项周期性消息检测连通性 心跳包. 心博.主要用于长连接. 02. * 参数:套接字, 1或0开启, 首次间隔时间, 两次间隔时间, 断开次数 03. */ 04.void setKeepAlive( int iSockfd , int iSockAttrOn, socklen_t iIdleTime , socklen_t iInterval , socklen_t iCount ){ 05. setsockopt( iSockfd , SOL_SOCKET , SO_K