`

Socket同步数据传输

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

服务端:

    /// <summary>
        /// 清理所有正在使用的资源。
        /// </summary>
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
        protected override void Dispose(bool disposing)
        {
            try
            {
                s.Close();
                th.Abort();                
            }
            catch
            {
            	
            }
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }


/***********************************************************************  
 * 服务端:  
 * (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.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;

namespace 同步
{
    public partial class Server : Form
    {
        string recvStr = "";
        Socket s;
        string host;
        Thread th;
        public Server()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
                th = new Thread(new ThreadStart(Receive));
                th.Start();
        }
        private string GetIP()
        {
            IPHostEntry ipe = Dns.GetHostByName(Dns.GetHostName());
            return ipe.AddressList[0].ToString();
        }
        private void Receive()
        {
            if ("" == textBox1.Text)
            {
                return;
            }
            int port = int.Parse(textBox2.Text.Trim());
            host = textBox1.Text.Trim();
            IPAddress ip = IPAddress.Parse(host);//把IP地址字符串转换为IPAdderess类型   
            IPEndPoint ipe = new IPEndPoint(ip, port);//用IP和port初始化IPEndPoint类的新实例   
            //创建一个socket对像,如果用udp协议,则要用SocketType.Dgram类型的套接字   
            s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            s.Bind(ipe);//为新建的Socket实例绑定IPEndPonit对象    

            while (true)
            {
                try
                {
                    s.Listen(5);//开始监听   
                    Socket temp = s.Accept();//为新建的连接创建Socket对象  
                    byte[] recvBytes = new byte[1024];
                    int bytes;
                    bytes = temp.Receive(recvBytes, recvBytes.Length, 0);//从客户端接收信息   
                    recvStr = Encoding.ASCII.GetString(recvBytes, 0, bytes);//把byte[]转换成字符串    
                    string msg = DateTime.Now.ToShortTimeString();
                    msg += "server get message from" + temp.RemoteEndPoint.ToString();
                    msg +="Message:"+ recvStr;
                    //textBox3.Text = msg; 
                    listBox1.Items.Add(msg);
                    string sendStr = "ok!Client send message successful";
                    byte[] bs = Encoding.ASCII.GetBytes(sendStr);//把字符串转换成byte[]   
                    temp.Send(bs, bs.Length, 0);//返回信息给客户端   
                    temp.Close();

                }
                catch (System.Exception ex)
                {
                  this.label4.Text =ex.Message .ToString ();
                }


            }
        }

        private void Server_Load(object sender, EventArgs e)
        {
            textBox1.Text = GetIP();
        }
    }
}

 

 

客户端:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;

namespace Clinet
{
    public partial class Clinet : Form
    {
        public Clinet()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Send();
        }
        private void Send()
        {
            int port = int.Parse(this.txtPort.Text.Trim());
            string host = this.txtIP.Text.Trim();
            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 = "";
            sendStr = textBox3.Text.Trim ();
            byte[] bs = Encoding.ASCII.GetBytes(sendStr);//把字符串转换为byte类型   
            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);
            this.label4.Text = "Clinet get message:" + recvStr;
            c.Close();

        }
    }
}

 

分享到:
评论

相关推荐

    NettySocket同步数据获取实现

    Netty 是一个高性能、异步事件驱动的网络...通过这种方式,我们可以构建一个具备完整功能的网络通信系统,包括同步数据传输、心跳检测、连接控制和登录验证。Netty的灵活性和高性能使得这些功能的实现变得简单而高效。

    C# Socket同步消息传输TcpServer

    总的来说,通过这个"C# Socket同步消息传输TcpServer"的实践,开发者不仅可以掌握C#中Socket的基本用法,还能了解到TCP通信的流程,包括连接建立、数据传输和连接关闭等环节,为后续更复杂的网络编程打下坚实的基础...

    Socket 同步通信 系列教程——1

    Socket同步通信是网络编程中的重要概念,主要用于实现不同计算机之间的数据传输。在这个系列教程中,我们将深入探讨Socket通信的基础知识,特别适合初学者逐步学习。本文将围绕标题和描述展开,详细阐述Socket同步...

    C# Socket 同步通信

    标题中的"C# Socket 同步通信"指的是使用C#语言编写Socket客户端和服务端,实现数据的同步传输。 首先,我们来了解Socket的基本概念。Socket是操作系统提供的网络编程接口,它允许应用程序通过网络发送和接收数据。...

    C#socket 大文件传输 分段传输 C#DEMO

    C#socket 大文件传输 分段传输 C#DEMO

    WinForm Socket 同步通信 源代码

    下面,我们将介绍使用C#实现WinForm和Socket同步通信的基本步骤: 1. **创建WinForm界面**:首先,我们需要创建一个WinForm窗口,包含必要的控件,如“发送”按钮和“接收”文本框。可以使用Visual Studio的设计器...

    socket 同步服务器存储

    同步套接字(Synchronous Socket)是一种网络编程中的通信机制,主要用于客户端和服务器之间的数据交换。同步套接字的工作方式是阻塞式的,即服务器在等待客户端连接或接收数据时,会暂停当前的执行流程,直到有数据...

    C#socket同步异步机制

    ### C# Socket 同步与异步机制详解 #### 一、引言 在现代软件开发中,网络通信是不可或缺的一部分。特别是在客户端-服务器架构的应用中,如何高效地进行数据交换变得尤为重要。C# 提供了多种方式进行网络编程,...

    c# socket同步通讯 异步通讯 客户端 服务端 实例

    本文将深入探讨C#中的Socket同步通讯与异步通讯,以及如何构建客户端和服务端程序。 首先,让我们了解什么是Socket。Socket是网络通信的基本单元,它允许应用程序通过网络发送和接收数据。在C#中,Socket类位于...

    HPSocket 同步发送 异步 sqllite模块源码

    在这个场景中,"HPSocket 同步发送 异步 sqlite模块源码"的标题暗示了我们将会讨论如何利用HPSocket进行同步数据发送,并结合SQLite数据库进行异步操作。 首先,让我们深入理解HPSocket。HPSocket是一个跨平台的...

    C# Socket 同步和异步通信

    Socket编程在C#中是网络通信的基础,它提供了一种基于TCP/IP协议的低级接口,使得应用程序可以方便地进行网络数据传输。本篇将详细探讨C#中的Socket同步和异步通信,以及如何在Winform环境下实现这些功能。 首先,...

    C# socket同步和异步通信示例

    在C#编程中,Socket是网络通信...通过理解和实践这些C# Socket同步和异步通信示例,开发者可以更好地掌握网络编程技术,为构建高效稳定的网络应用打下坚实基础。在实际开发中,应根据项目需求灵活选择合适的通信方式。

    计算机网络课程设计报告基于Socket在线数据传输的设计与实现.doc

    3. 数据传输:通过 Socket 连接,双方可以进行双向数据传输。服务器和客户端可以发送和接收消息,实现在线通信。 4. 错误处理:设计适当的错误处理机制,例如连接中断、数据传输错误等。 5. 关闭连接:完成数据交换...

    HPSocket同步

    HPSocket同步版本的出现,是为了满足开发者在多线程环境下的同步控制需求,确保数据传输的有序性和一致性。 HPSocket是一个高性能、跨平台的TCP/IP通讯组件,它提供了丰富的接口,可以方便地进行Socket编程,支持...

    socket同步异步通信.rar

    本教程将深入探讨C#中的Socket同步与异步通信。 **一、Socket基础** Socket是网络通信的接口,它提供了进程间通过网络进行通信的能力。在C#中,`System.Net.Sockets.Socket`类是我们操作Socket的主要工具。Socket...

    C# Socket 同步异步编程实例

    本篇将深入探讨C#中的Socket同步和异步编程实例,帮助开发者理解和掌握这两种模式的使用。 **1. Socket基础知识** Socket是网络编程中的一个抽象概念,它是应用程序与网络协议栈之间的接口,提供了发送和接收数据的...

    socket异步和同步使用

    在实现这些功能时,注意要正确处理网络异常,如连接断开、数据传输错误等,确保程序的健壮性。同时,为了优化性能,可以考虑使用缓冲区管理数据的发送和接收,避免频繁的小规模操作。 总结来说,Socket异步和同步...

    socket编程文件传输

    总结,C++ MFC下的Socket编程文件传输涉及创建Socket、监听/连接、发送/接收数据、错误处理等多个步骤。理解这些概念并能熟练应用,是开发高效可靠的文件传输系统的关键。在实际项目中,开发者应根据需求选择合适的...

    C#SOCKET大文件传输.zip

    实现断点续传通常需要客户端和服务器端保存文件传输状态,如已传输的字节数,并通过特定协议进行同步。 压缩包中的其他文件可能包括: - **NET完成端口测试结果.xlsx**:可能包含了使用完成端口技术前后的性能对比...

    C#Socket文件传输简单例子(将文件名和文件同时传输)

    在C#编程中,Socket是网络通信的基本组件,它提供了进程间、网络间的数据传输能力。本示例主要探讨如何使用C#的Socket类进行文件的传输,包括文件名和文件内容的同步发送与接收。这里我们将详细讲解实现这一功能的...

Global site tag (gtag.js) - Google Analytics