`

同步Socket

    博客分类:
  • C#
阅读更多


/***********************************************************************
 * 服务端:
 * (1)用指定的端口和IP建立EndPoint对象
 * (2)建立一个Socket对象
 * (3)用Socket对象的Bind()方法绑定IPEndPoint
 * (4)用Socket对象的Listen()方法开始监听
 * (5)接收到客户端的连接,用Socket对象的Accept()方法创建新的Socket对象和请求的客户端进行通信
 * (6)通信结束后,关闭Socket对象
************************************************************************/

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;

namespace server
{
    class Program
    {
        static void Main(string[] args)
        {
       
            int port = 2000;
            string host = "192.168.0.104";
            IPAddress ip = IPAddress.Parse(host );//把IP地址字符串转换为IPAdderess类型
            IPEndPoint ipe = new IPEndPoint(ip,port );//用IP和port初始化IPEndPoint类的新实例
            //创建一个socket对像,如果用udp协议,则要用SocketType.Dgram类型的套接字
            Socket s = new Socket(AddressFamily.InterNetwork ,SocketType.Stream ,ProtocolType.Tcp );
            s.Bind(ipe );//为新建的Socket实例绑定IPEndPonit对象      

            s.Listen(0);//开始监听
        L:
            Console.WriteLine("等待客户端");
            Socket temp = s.Accept();//为新建的连接创建Socket对象
            Console.WriteLine("建立连接");
            string recvStr = "";
            byte[] recvBytes = new byte[1024];
            int bytes;           
            bytes = temp.Receive(recvBytes ,recvBytes.Length ,0);//从客户端接收信息
            recvStr += Encoding.ASCII.GetString(recvBytes ,0,bytes );//把byte[]转换成字符串
            Console.WriteLine("server get message:{0}",recvStr );
            string sendStr = "ok!Client send message successful";
            byte[] bs = Encoding.ASCII.GetBytes(sendStr );//把字符串转换成byte[]
            temp.Send(bs,bs.Length ,0);//返回信息给客户端
            temp.Close();
            goto L;
            s.Close();           
            Console.ReadLine(); 
           
        }
    }
}



/***********************************************************************
 * 客户端
 * (1)建指定的端口和IP建立IPEndPoint对象。
 * (2)建立Socket对象
 * (3)用Socket对象的Connect()方法,以上面建立的IPEndPoint对象为参数,向服务器发送连接请求
 * (4)若连接服务器成功,则用Socket对象的Send方法向服务器发送数据
 * (5)用Socket对象的Receive()方法接收服务器返回的信息
 * (6)关闭Socket
************************************************************************/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
namespace client
{
    class Program
    {
        static void Main(string[] args)
        {

            try
            { Send:
                int port = 2000;
                string host = "192.168.0.104";
                IPAddress ip = IPAddress.Parse(host);//将Ip地址由字符串转换为IPAddress类型
                IPEndPoint ipe = new IPEndPoint(ip, port);//用指定的IP和端口初始化IPEndPoint类的新实例
                //建立Socket对象
                Socket c = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
           
                c.Connect(ipe);//连接服务器
                string sendStr = "";
                Console.WriteLine("请输入要发送的信息:");
                sendStr = Console.ReadLine();
                byte[] bs = Encoding.ASCII.GetBytes(sendStr);//把字符串转换为byte类型
                Console.WriteLine("Send Message");
                c.Send(bs, bs.Length, 0);//向服务器发送信息
                string recvStr = "";
                byte[] recvBytes = new byte[1024];
                int bytes;
                bytes = c.Receive(recvBytes, recvBytes.Length, 0);//接收服务器返回的信息
                recvStr += Encoding.ASCII.GetString(recvBytes, 0, bytes);
                Console.WriteLine("Clinet get message:{0}", recvStr);

                Console.ReadLine();
               
                c.Close();
               goto Send;
               
                      
            }
           catch (ArgumentNullException e)
            {
                Console.WriteLine("argumentNullException: {0}", e);
            }
            catch (SocketException e)
            {
                Console.WriteLine("SocketException:{0}", e);
            }
            Console.WriteLine("Press Enter to Exit");
          
        }
    }
}
分享到:
评论

相关推荐

    C#简单同步socket网络通讯

    在这个“C#简单同步socket网络通讯”的示例中,我们将探讨如何使用C#的TcpClient、TcpListener和UdpClient类来实现基本的网络通信。 首先,TcpClient类是用于建立TCP连接的客户端对象。它提供了与远程服务器建立...

    同步Socket(客户端与服务器端)

    同步Socket,也称为阻塞Socket,是网络编程中一种基础且重要的通信机制,主要用于客户端与服务器之间的数据交换。在客户端-服务器模型中,同步Socket允许应用程序通过发送请求并等待响应来执行通信。以下是对同步...

    同步socket发送消息实例

    在本文中,我们将深入探讨“同步Socket发送消息”的实例,这涉及到如何使用同步方式进行数据传输,并重点关注如何修改IP地址以适应不同的网络环境。 同步Socket(Synchronous Socket)也称为阻塞Socket,它在发送或...

    C# 同步Socket TCP/UDP 封装类

    "C# 同步Socket TCP/UDP 封装类"涉及到的关键知识点主要包括Socket的使用、TCP和UDP协议的理解、同步Socket编程模式以及如何设计和实现封装类。这些知识点对于开发网络应用至关重要,理解并掌握它们可以帮助开发者...

    同步Socket典型例子C# .Net

    本文将深入探讨标题所提及的同步Socket在C#中的使用,以及如何实现多客户端通信。 同步Socket是一种基于阻塞模式的通信方式,意味着在数据传输过程中,程序会暂停执行,等待数据发送或接收完成后再继续执行后续代码...

    同步SOCKET多线程通信例子

    自己刚刚弄SOCKET,网上的很多资源都是FORM的。我自己做了一个命令台的,服务器端长时间侦听端口,当一个客户端连上后,就起一个线程来接受数据,并发送信息。客户端可以接受服务器发回的信息。并且可以多个客户端...

    vc同步socket tcp api聊天程序_一台服务器连n台客户机.rar

    "VC同步Socket TCP API聊天程序_一台服务器连n台客户机"这个项目涉及到的是使用Visual C++(VC)开发的一个同步Socket应用,它实现了基于TCP协议的多客户端与单一服务器的通信模型。下面将详细阐述相关的知识点。 1...

    socket异步和同步使用

    **同步Socket编程**指的是在执行Socket操作时,程序会阻塞直到该操作完成。在C#中,你可以通过调用`Socket.Send()`或`Socket.Receive()`方法来实现同步通信。这种方式简单直观,但当处理大量数据或连接数较大时,...

    socket同步

    总的来说,同步Socket编程在某些特定情况下能够提供良好的性能和可读性,但需要注意的是,当客户端数量较大或者需要处理长连接时,同步Socket可能会导致线程资源的大量消耗,此时推荐使用异步Socket或者更高层次的...

    C# Socket 同步异步编程实例

    同步Socket编程意味着发送和接收数据的操作会阻塞程序执行,直到数据传输完成。以下是一个简单的同步Socket服务器和客户端的实例: - **服务器端**: 1. 创建一个Socket实例,指定协议类型(如:`SocketType....

    socket同步和异步编程实例(C#)

    例如,当一个同步Socket调用`Receive()`或`Send()`方法时,如果数据没有完全接收或发送,程序会等待,这可能导致程序在处理高并发请求时效率降低。在`MSDN`提供的实例中,开发者可能会看到如何使用`Socket.Receive()...

    Dos-Socket同步例子(C++)

    【描述】中提到的博文链接指向了"iteye.com"上的一个博客条目,该博客可能详细解释了如何编写一个简单的同步Socket应用。通常,这样的例子会包括创建服务器端(Server)监听特定端口,等待客户端(Client)连接;...

    C_同步异步SOCKET通讯和多线程总结.doc

    同步Socket通信是阻塞式的,即在发送或接收数据时,程序会暂停执行,等待数据传输完成。这种方式简单易懂,适合数据量较小、实时性要求不高的场景。在服务器端,通常会创建一个Socket实例,使用`Bind`方法将其绑定到...

    socket在msdn上同步及异步示例

    1. **同步Socket操作**: 同步操作通常适用于简单、短时间的通信。例如,服务器端创建一个Socket实例,绑定到特定的IP地址和端口,然后调用`Listen()`方法开始监听。当有客户端连接时,`Accept()`方法会阻塞,直到...

    [C#通信二]C#.net同步异步SOCKET通讯和多线程总结

    同步SOCKET通信 同步通信意味着发送方会等待接收方响应,直到数据传输完成。在服务器端,我们首先创建一个`Socket`对象,设置本机IP和监听的端口,并使用`Bind()`方法将其绑定。然后,使用`Listen()`方法启动监听,...

    Socket同步 (2).rar

    里面包含客户端和服务端一起,分开写的,所以大家能够看的详细一些,为了方便大家看的清楚,每一行都有详细...适用于刚学socket想要理解的同学,后期我还会上传异步的。里面有两个工程 第一个为服务端,第二个为客户端

    C__Socket编程_同步以及异步通信.pdf

    ### C__Socket编程_同步以及异步通信 #### 套接字简介 套接字是一种用于网络通信的编程接口,最初由Unix系统发展而来,随后Windows和其他操作系统也采纳了这一设计思想。套接字提供了应用程序之间通过网络进行通信...

    C#Socket同步,异步编程实例.rar

    2. **同步Socket编程** - **建立连接**:在同步模式下,`Socket`的`Connect()`方法会阻塞,直到与服务器建立连接。例如: ```csharp IPEndPoint serverEndPoint = new IPEndPoint(IPAddress.Parse("192.168.1.1")...

    socket同步,异步示例编程

    同步Socket编程是指发送方在发送数据后会阻塞,等待接收方的响应,直到数据被接收或发生错误才会继续执行后续操作。这种方式简单直观,但效率较低,因为程序在等待响应时无法执行其他任务。以下是一个简单的同步...

Global site tag (gtag.js) - Google Analytics