`

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同步数据获取实现

    NettySocket同步数据获取实现,并实现了心跳检测,客户端连接控制,客户端登陆等。 Demo代码

    SocketDemo同步TCP以太网通信

    本例子运用C#中的Socket类进行以太网同步通信,里面有服务器和客户端界面,可以传输文件和文字,代码有大量的注释,可以让初学者很好的理解socket TCP网络编程。

    通用数据传输-socket构架 DRGeneralDataTransmission.rar

    通用数据传输socket构架源码 源码描述: 一、源码特点 1、此软件的基本思想是为了建立一套简单稳点可多负载的架构,通用数据通讯构建,设计基于TCP通信的交互框架。目前以达到3.0版本,可规范先后台交互处理,可...

    socket异步和同步使用

    参考了许多大侠的代码,才写出来东东,没对数据做校验,希望给正在研究这方的东东的人一点参考.里面包含文件以及DataTable传输等

    TCP/UDP缓冲区链表socket实现图片传输

    该程序通过c/c++实现windows环境下的socket通过tcp/udp传输文件,在传输的过程将客户端的数据首先保存在缓冲区里,然后读入链表最后遍历链表以还原文件,在此过程中有用到多线程技术实现同步操作

    c语言SOCKET编程指南.pdf

    3. 网络理论:网络理论是SOCKET编程的基础,包括网络拓扑结构、协议、数据传输等。 4. 结构体:在SOCKET编程中,结构体是一种重要的数据结构,用于存储套接字的信息。 5. 本机转换:本机转换是SOCKET编程中的一种...

    vc以IOCP完成端口方式实现网络数据传输 iocp服务器+客户端.zip

    visual c++ socket IOCP完成端口实现网络数据传输 iocp服务器+客户端.zip Server端用的是同步的Accept函数

    细细品味C#(Socket编程).pdf

    C# Socket 编程是计算机网络编程的一个重要方面,涉及到网络通信、数据传输、协议处理等多个方面。本资源涵盖了 C# Socket 编程的多个方面,包括聊天程序、网络编程、HTTP 请求响应、多线程编程等。 聊天程序 聊天...

    基于TDI 的 TCP数据传输

    基于TDI 的 TCP数据传输 1.上位机 上位机包括tcp和tcp.cpp 1.1 对外函数说明 HANDLE TdiTcpOpen(); TdiTcpOpen用于打开设备,成功返回有效的句柄,失败返回INVALID_HANDLE_VALUE. BOOL TdiTcpClose(HANDLE ...

    c语言原始SOCKEt编程.pdf

    流式套接字提供可靠的双向通讯的数据流,而数据报套接字提供不可靠的、无连接的数据传输。 流式套接字 流式套接字提供可靠的双向通讯的数据流。如果你向套接字按顺序输出“1,2”,那么它们将按顺序“1,2”到达另...

    同步文件工具3.0.rar

    基于python socket tcp局域网同步文件夹功能和wxpthon的界面。 需要局域网传输同步工具可直接下载使用.支持双向传输和单向传输

    异步文件传输工具libafdt.zip

    通过底层和同步接口传输数据报的时候需要使用 libevent。libafdt 有两个高层接口:异步接口和同步接口。一般前者是基于 libevent 的客户端或服务器。它使用回调功能使程序处理高级活动。后者不需要的libevent,但在...

    C#套接字编程实例_UDP_TCP通信源码实例

    首先从原理上解释一下采用Socket 接口的网络通讯,这里以最常用的 C/S 模式作为范例,首先,服务端有一个进程(或多个进程)在指定的端口等待客户来 连接,服务程序等待客户的连接信息,一旦连接上之后,就可以按...

    数据同步软件rsync.zip

    rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remote sync。它的特性如下: ...5、可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接。 6、支持匿名传输。

    JAVA文件传输的实现.rar

    Socket编程:利用Java的Socket API实现客户端和服务器之间的通信,建立TCP连接进行数据传输。 文件流操作:使用Java的文件输入输出流(FileInputStream、FileOutputStream)读取和写入文件内容。 多线程处理:通过多...

    pojosync:在浏览器和 node.js 服务器之间同步数据

    使用 socket.io 在客户端/浏览器和 node.js 服务器之间同步 POJO ##它能做什么 该库允许您在多个客户端和服务器之间保持数据对象是最新的。 这个怎么运作 一旦你与Client.put(object)共享了一个对象,它(以及它...

    lsyncd与rsync实现实时自动同步的配置.docx

    + 创建用于同步数据的目录。 * 客户端(lsyncd+rsync): + 下载并安装rsync。 + 下载并安装lsyncd。 5. 配置lsyncd与rsync 在配置lsyncd与rsync时,需要注意以下几点: * 在rsync client上配置lsyncd,以监控...

    flask-socketio-video-stream:尝试使用 Flask 和 Socket.io 流式传输网络摄像头

    烧瓶socketio视频流 这是尝试使用 getUserMedia() 捕获视频流,使用 websockets 将其发送到服务器,然后在视频控件中播放。 它几乎不起作用,帧速率非常慢。 试试看: virtualenv env --no-site-packages ...

    Linux中实现数据镜像备份.pdf

    RSYNC是Linux下的文件同步和数据传输工具,使用特定的算法在客户机和服务器之间实现文件同步操作。RSYNC可以将本机中的数据通过网络传输备份到其他远程主机上,或者将数据备份到本机中的不同分区上,并且支持断点...

Global site tag (gtag.js) - Google Analytics