`
hewei870723
  • 浏览: 62875 次
  • 性别: 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应用程序来讲解服务端与客户端的交互过程,这对于初学者来说是一次很好的学习机会。 首先,Socket是C#中进行网络通信的基础类,它基于TCP/IP协议栈,...

    C#socket简单实例

    下面,我们将详细讲解如何创建和使用C# Socket实例。 首先,我们先看"server"文件,这是一个简单的服务器端程序。服务器端的主要任务是监听客户端的连接请求,并对连接的客户端发送或接收数据。在C#中,我们首先...

    c# socket编程实例

    对于初学者而言,这是一个很好的实践项目,可以帮助他们更好地理解 Socket 编程的核心思想及其应用。 通过上述分析,我们可以看出 C# 提供了一套非常完整的 Socket 编程接口,使得开发者能够轻松地实现网络通信功能...

    C# Socket通讯框架,封装了Client和Server端类库,带实例

    在IT行业中,网络通信是至关重要...无论是初学者还是有经验的开发者,都能从中获益,快速构建起可靠的网络通信系统。记得仔细研究提供的"FlyTcpFrameworkDemo"示例和"FlyTCPFramework手册",这将是掌握这个框架的关键。

    基于C#的socket实例

    本项目“基于C#的socket实例”旨在帮助开发者理解和应用C#中的Socket编程,实现客户端与服务器端之间的数据传输。在这个项目中,我们将深入探讨Socket的基本概念、C#中的Socket类、跨线程通信以及委托回调机制。 ...

    C#socket调试助手

    本项目中的C# Socket调试助手通过创建Socket实例,实现了客户端与服务器端的连接、数据传输以及消息的接收和解析。 首先,我们需要了解Socket的基本工作流程。在C#中,创建Socket实例后,通常需要设置其协议类型...

    C# Socket 通信,客户端服务器端

    对于初学者来说,这样的实践项目是提高技能的绝佳途径,因为它提供了一个从零开始构建网络应用的机会。 总之,C# Socket通信是网络编程的基础,理解和掌握这一技术对成为一名合格的IT专业人员至关重要。通过阅读和...

    C# 网络编程之socket tcp 通讯demo样例

    这个"C# 网络编程之socket tcp 通讯demo样例"可能涵盖了这些基本操作,为初学者提供了理解TCP通信机制的起点。通过阅读和理解代码,你可以了解到如何在C#中建立和管理TCP连接,以及如何进行数据的收发。对于进一步的...

    C# Socket通讯DEMO

    这个DEMO对于初学者来说,是理解C# Socket通信机制的一个良好起点。通过分析和运行这个示例,开发者可以学习到如何创建和管理Socket,以及如何在实际应用中实现数据交换。同时,这个简单的聊天功能也能帮助开发者...

    C# socket 简单例子 初学做的

    总的来说,C# Socket编程为开发者提供了强大的网络通信能力,无论是初学者还是有经验的开发者,都能通过学习和实践提升自己的技能。通过理解Socket的工作原理和C#中的实现方式,你将能够构建高效、稳定的网络应用...

    C#_Socket源码示例适合初学者

    本资源"**C#_Socket源码示例**"是针对初学者设计的,旨在帮助他们理解并掌握C#中的Socket编程技术。Socket编程是网络编程的基础,它允许应用程序通过网络发送和接收数据。 Socket在C#中的应用主要基于System.Net...

    150个C#初学者编程实例.rar

    "150个C#初学者编程实例"压缩包提供了一系列的练习,旨在帮助新手快速上手C#编程。 1. **基础语法**:C#的基础包括变量、数据类型、运算符、流程控制(如if语句、switch语句、for循环、while循环)等。实例中的代码...

    C# Winform 即时通信实例(基于Socket )

    本项目提供的代码示例对于初学者来说,是一个很好的学习资源。通过阅读和理解代码,可以深入了解Socket编程的基本原理和技巧。同时,由于代码结构清晰,注释明了,对于已有基础的开发者,也是一个理想的二次开发起点...

    c# socket 简单实例

    本篇文章将详细解析"C# Socket简单实例",帮助初学者理解如何使用C#进行网络通信。 首先,我们要明白Socket在计算机网络中的角色。Socket是操作系统提供的一个接口,它允许应用程序通过网络发送和接收数据。在C#中...

    c#Socket实例

    这个“c#Socket实例”应该包含了一个简单的客户端和服务器程序,你可以解压提供的"Socket"文件,运行并分析代码,进一步了解和学习C#中的Socket编程。记住,实践是最好的老师,动手编写和调试代码是提升技能的关键。

    C#Socket通信 Demo

    总的来说,这个Demo是一个很好的学习和实践C# Socket通信的起点,无论你是初学者还是有经验的开发者,都能从中受益。通过深入研究和修改代码,你可以创建更复杂的网络应用,如聊天室、文件传输服务等。

    C# socket收发实例 DEMO

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

    c# Socket Server Client 实例

    本实例将深入探讨C#中的Socket服务器和客户端的实现,旨在帮助初学者和有经验的开发者更好地理解和应用Socket通信。 首先,我们要理解Socket的基本概念。Socket,也称为套接字,是网络通信中的一个接口,它允许应用...

    C# 中 Socket实例

    本教程主要聚焦于C#中的Socket实例,适用于那些正在学习C#和.NET平台的开发者,特别是想要掌握Winform应用程序中客户端与服务器端交互的初学者。 首先,Socket源于Berkeley套接字,是操作系统提供的网络通信接口,...

    c# Socket 实现源码

    这个"C# Socket 实现源码"实例是一个很好的学习资源,它将帮助初学者理解TCP Socket的工作原理,包括连接建立、数据传输和断开连接等基本操作。通过实际编写和运行代码,你可以更深入地了解网络编程,并为更复杂的...

Global site tag (gtag.js) - Google Analytics