`

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传输文件,在传输的过程将客户端的数据首先保存在缓冲区里,然后读入链表最后遍历链表以还原文件,在此过程中有用到多线程技术实现同步操作

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

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

    基于TDI 的 TCP数据传输

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

    同步文件工具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)共享了一个对象,它(以及它...

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

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

    linux网络编程

    IP数据报格式 网际校验和 路由 04TCPIP基础(四) TCP特点 TCP报文格式 连接建立三次握手 连接终止四次握手 TCP如何保证可靠性 05TCPIP基础(五) 滑动窗口协议 UDP特点 UDP报文格式 Linux网络编程之socket编程篇 06...

    socket.io学习教程之基础介绍(一)

    前言 Web端与服务器间的实时数据传输的是一个很重要的需求,但最早只能通过AJAX轮询询实现。...socket.io将数据传输部分独立出来形成了engine.io , engine.io对WebSocket和AJAX轮询进行封装,形成一套

    python使用tcp实现局域网内文件传输

    本文为大家分享了python使用tcp实现局域网内文件传输的具体代码,供大家参考,具体内容如下 功能: 可以利用python创建的TCP客户端从我们自己搭建的TCP服务器上下载文件。 实现需求: 安装socket模块 简单了解...

    cwRsync 文件同步 客户端

    Rsync是一款不错的文件免费同步软件,可以镜像保存整个目录树和文件系统,同时...传输数据过程中可以实行压缩及解压缩操作,减少带宽流量。支持scp、ssh及直接socket方式连接,支持匿名传输。支持Linux, Window平台。

    eradio:一个Erlang HTTP服务器,该服务器将数据流传输到多个客户端,并以低延迟进行了有损的时间同步

    爱拉迪欧一个Erlang HTTP服务器,该服务器将数据流传输到多个客户端,从而以低延迟进行了有损的时间同步。 HTTP / 1和HTTP / 2使用TCP作为其传输协议,这对于“实时流式传输”(即低延迟时间同步流式传输)是有问题...

Global site tag (gtag.js) - Google Analytics