`
hewei870723
  • 浏览: 62054 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

C# Socket实例(适合初学者)

阅读更多
注:很多代码是从高手那里弄来的,希望高手们莫怪,对你有用的帮忙顶下。
别忘记引进命名空间
    using System.Net;
    using System.Net.Sockets;

Sever

           int port = 2000;      //指定端口 (最后些在配置文件中)
            String host = "127.0.0.1";   //指定IP
            IPAddress ip = IPAddress.Parse(host);//把ip地址字符串转换为IPAddress类型的实例
            IPEndPoint ipep = new IPEndPoint(ip, port);//用指定的端口和ip初始化IPEndPoint类的新实例

            int recv;//用于表示客户端发送的信息长度
      byte[]data=new byte[1024];//用于缓存客户端所发送的信息,通过socket传递的信息必须为字节数组
      //IPEndPoint ipep=new IPEndPoint(IPAddress.Any,9050);//本机预使用的IP和端口(本人进行测试没有通过)
      Socket newsock=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);

            newsock.Bind(ipep);//绑定
      newsock.Listen(10);//监听
      Console.WriteLine("waiting for a client");
      Socket client=newsock.Accept();//当有可用的客户端连接尝试时执行,并返回一个新的socket,用于与客户端之间的通信
      IPEndPoint clientip=(IPEndPoint)client.RemoteEndPoint;
      Console.WriteLine("connect with client:"+clientip.Address+"atport:"+clientip.Port);
      string welcome="welcome here!";
      data=Encoding.ASCII.GetBytes(welcome);
      client.Send(data,data.Length,SocketFlags.None);//发送信息
      while(true)
      {//用死循环来不断的从客户端获取信息
        data=new byte[1024];
        recv=client.Receive(data);
        Console.WriteLine("recv="+recv);
        if(recv==0)//当信息长度为0,说明客户端连接断开
          break;
        Console.WriteLine(Encoding.ASCII.GetString(data,0,recv));
        client.Send(data,recv,SocketFlags.None);
      }
      Console.WriteLine("Disconnected from"+clientip.Address);
      client.Close();
      newsock.Close();

Client

byte[] data = new byte[1024];
            Socket newclient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            Console.Write("please input the server ip:");
            string ipadd = Console.ReadLine();
            Console.WriteLine();
            Console.Write("please input the server port:");
            int port = Convert.ToInt32(Console.ReadLine());
            IPEndPoint ie = new IPEndPoint(IPAddress.Parse(ipadd), port);//服务器的IP和端口
            try
            {
                //因为客户端只是用来向特定的服务器发送信息,所以不需要绑定本机的IP和端口。不需要监听。
                newclient.Connect(ie);
            }
            catch (SocketException e)
            {
                Console.WriteLine("unable to connect to server");
                Console.WriteLine(e.ToString());
                return;
            }
            int recv = newclient.Receive(data);
            string stringdata = Encoding.ASCII.GetString(data, 0, recv);
            Console.WriteLine(stringdata);
            while (true)
            {
                string input = Console.ReadLine();
                if (input == "exit")
                    break;
                newclient.Send(Encoding.ASCII.GetBytes(input));
                data = new byte[1024];
                recv = newclient.Receive(data);
                stringdata = Encoding.ASCII.GetString(data, 0, recv);
                Console.WriteLine(stringdata);
            }
            Console.WriteLine("disconnect from sercer");
            newclient.Shutdown(SocketShutdown.Both);
            newclient.Close();

分享到:
评论

相关推荐

    C#Socket实例源码

    C#Socket简单实例,Winform小程序,服务端发送,客户端监听,适合初学者。

    c#Socket实例

    一个简单的c#Socket学习实例,适合于初学者!

    C# socket收发实例 DEMO

    简单易懂的Socket发送接收实例,绝对可用; 压缩包中SocketClient为客户端,SocketTest为服务端; 可在客户端输入内容,按回车发送; 服务端会显示接收到的数据并做出回应...代码中注释也比较完整,为初学者用心打造;

    最基本的C# Socket编程小例子

    一个最基本的C# Socket编程小例子,适合初学者。

    C#WebSocket示例(初学者必备)

    C# WebSocket 服务端和网页端示例,初学者必备!

    C# Socket通信两个最简单的实例

    C# Socket通信两个最简单的实例 使用说明:先启动服务器端,然后再打开客户端进行连接 适合初学者

    C# Socket聊天服务端程序

    创建Socket实例,实现简单的发送和接收数据。适合初学者参考!

    c# Socket 实现源码

    是初学者学习socket 编程的最好实例,能够帮助快速理解socket的原理和应用。

    c#多人聊天实例 Socket

    c#多人聊天实例 Socket 注释不多 水平也不够,供初学socket者参考

    C# Socket多线程编程简单实例

    一个简单明了的,介绍Socket多线程编程的实例,对初学者很有帮助。

    c#socket通讯(服务端+客户端融合一起)

    来公司一个月,做的东西.拿出来分享下.看着还凑活

    C#_Socket多线程编程实例

    关于socket多线程编程一个PPT讲解教程,比较详细,适合初学者。

    C#网络编程实例

    本书主要讲C#网络编程,是一部非常好的学习用书,适合初学者

    C#实例程序-30套-程序源码合集.zip

    这份C#实例程序包含了30个实用的示例,涵盖了各种常见的编程场景和技巧。每个示例都经过精心设计和编写,旨在帮助开发者更好地理解和掌握C#...同时,这些示例也可以帮助初学者快速入门C#编程,节省学习和实践的时间。

    异步Socket实现TCP网络服务的CS的通讯构架

    异步Socket实现TCP网络服务的CS的通讯构架,各种的C#的异步Socket的常用实例,给初学者和进阶者都能带来不小的好处。

    简单的QQ(TCP/Socket通讯实例)

    这是一个用C#开发,基于TCP/IP协议和Socket通讯的简单QQ小程序,供初学者参考和学习!

    C_Sharp_Socket书

    C# socket编程,适用于初学socket的学习者,带有实例!

    C#实现的TCP服务端及客户端实例源代码.rar

    C#实现的TCP服务端及客户端实例源代码 在winform框架下,使用vs2017工具,使用Socket编写 服务端具备:在线列表刷新显示,如果断开链接会自动剔除,防止占用连接。...非常适合初学者或毕业设计学习者使用。

    Socket.rar

    最近学习C# Socket通讯,网上搜集了很多实例,基本都是发送不带验证的,测试效果不理想,自己边学习边编写,实现文件传输,发送文字,每次发送都确认接收端接收成功,简单数据处理,防止粘包,代码没有封装。对初学...

    C#全能速查宝典

    《C#全能速查宝典》不仅适合C#程序设计初学者,也可作为中、高级程序开发人员的参考手册。 ============================================================ 图书目录 第1章 C#语言基础 1 1.1 常用概念、关键字及...

Global site tag (gtag.js) - Google Analytics