采用socket发送和接收数据的实验中,服务器采用的是网络助手作为模拟服务器端。

客户端程序流程:

应用的命名空间:

  1. using System.Net;
  2. using System.Net.Sockets;
  3. using System.Threading;
  4. using System.Timers;

【1】首先新建一个Socket;

【2】建立ip地址应用值;

【3】Socket连接;

【4】判断连接状态;

  1.      Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
  2.  
  3. private void button1_Click(object sender, EventArgs e)
  4. {
  5. if (textBox1.Text != "" || textBox2.Text != "")
  6. {
  7.  
  8. IPAddress ip = IPAddress.Parse(textBox2.Text);
  9.  
  10. try
  11. {
  12. s.Connect(ip, Convert.ToInt16(textBox1.Text));
  13. MessageBox.Show("服务器连接中。。。");
  14. }
  15. catch
  16. {
  17. MessageBox.Show("服务器连接失败。。。");
  18. }
  19. try
  20. {
  21. if (s.Connected == true)
  22. {
  23. MessageBox.Show("与服务器连接成功");
  24. aTimer.Enabled = true;
  25. }
  26. else
  27. {
  28. MessageBox.Show("与服务器连接失败");
  29. }
  30. }
  31. catch
  32. {
  33. MessageBox.Show("检测连接状态出错");
  34. }
  35. }
  36. else
  37. {
  38. MessageBox.Show("请输入端口号和IP地址");
  39. }
  40.  
  41. }

Socket数据的发送

  1. private void button2_Click(object sender, EventArgs e)
  2. {
  3. if (s.Connected == true)
  4. {
  5. try
  6. {
  7. string abc = textBox3.Text;
  8.  
  9. s.Send(Encoding.ASCII.GetBytes(abc));
  10.  
  11. MessageBox.Show("向服务器发送:" + abc);
  12. }
  13. catch
  14. {
  15. MessageBox.Show("发送失败");
  16. }
  17. }
  18. }

Socket数据接收

数据接收要交给线程去做,然后调用定时器去做,这样会防止在数据接收时,其他程序不可用的状况。

  1. System.Timers.Timer aTimer = new System.Timers.Timer();
  2.  
  3. byte[] res = new byte[];
  4.  
  5. private void Form1_Load(object sender, EventArgs e)
  6. {
  7. Control.CheckForIllegalCrossThreadCalls = false;
  8. aTimer.Enabled = false;
  9. Thread thread1 = new Thread(TimerMange);
  10. thread1.IsBackground = true;
  11. thread1.Start();
  12. }
  13.  
  14. void TimerMange()
  15. {
  16. aTimer.Elapsed += new ElapsedEventHandler(socket_rev); //定时事件的方法
  17. aTimer.Interval = ;
  18. }
  19.  
  20. private void socket_rev(object sender, EventArgs e)
  21. {
  22. int receiveLength = s.Receive(res, res.Length, SocketFlags.None);
  23.  
  24. if (receiveLength > )
  25. {
  26. textBox4.Text = Encoding.ASCII.GetString(res, , receiveLength);
  27. string abc = "HaveReceive";
  28. s.Send(Encoding.ASCII.GetBytes(abc));
  29. }
  30. }

【实验室笔记】C#的Socket客户端接收和发送数据的更多相关文章

  1. 关于socket客户端接收不定长数据的解决方案

    #!/usr/bin/env python3.5 # -*-coding:utf8-*- """ 本实例客户端用于不断接收不定长数据,存储到变量res "&qu ...

  2. Java基础知识强化之网络编程笔记03:UDP之UDP协议发送数据 和 接收数据

    1. UDP协议发送数据 和 接收数据 UDP协议发送数据: • 创建发送端的Socket对象 • 创建数据,并把数据打包 • 调用Socket对象的发送方法,发送数据包 • 释放资源  UDP协议接 ...

  3. Java基础知识强化之网络编程笔记06:TCP之TCP协议发送数据 和 接收数据

    1. TCP协议发送数据 和 接收数据 TCP协议接收数据:• 创建接收端的Socket对象• 监听客户端连接.返回一个对应的Socket对象• 获取输入流,读取数据显示在控制台• 释放资源 TCP协 ...

  4. C语言Socket-单工通信(客户端向服务器发送数据)

    服务端(server) #include <stdio.h> #include <winsock2.h> #pragma comment(lib,"ws2_32.li ...

  5. java-UDP协议接收和发送数据

    UDP发送数据的步骤: A:创建发送端的Socket服务对象 B:创建数据,并把数据打包 C:通过Socket对象的发送功能发送数据包 D:释放资源 public class SendDemo {   ...

  6. Android客户端向服务器端发送数据的流程(1)

    原理: android客户端通过使用org.apache.http.impl.client.DefaultHttpClient类来发送数据; 方法介绍: HttpClient是android中提供的一 ...

  7. C#,COM口,接收,发送数据

    这里写一种,COM口的数据接收,发送方法. 1.COMHelper类 /// <summary>初始化串行端口</summary> private SerialPort _se ...

  8. MM32F0140 UART1 DMA RX and TX 中断接收和发送数据

    目录: 1.MM32F0140简介 2.DMA工作原理简介 3.初始化MM32F0140 UART1 4.配置MM32F0140 UART1 DMA接收 5.配置MM32F0140 UART1 DMA ...

  9. 使用netty4.x客户端接收较大数据量报文时发生的读取不完整bug修复记录

    1.先说问题 背景:服务是运行在Linux上的安全网关提供的,TCP协议发送 通过二进制编码的xml字符串 报文,报文头的第一个字段是int类型的表示字节序标记,第二个字段是int类型的表示整个报文长 ...

随机推荐

  1. 强烈推荐:240多个jQuery插件【转】

    强烈推荐:240多个jQuery插件 概述 jQuery 是继 prototype 之后又一个优秀的 Javascript 框架.其宗旨是—写更少的代码,做更多的事情.它是轻量级的 js 库(压缩后只 ...

  2. IP:网际协议

    IP:网际协议 1.概述      IP是TCP/IP协议族中最为核心的协议.所有的TCP,UDP,ICMP,IGMP数据都以IP数据报格式传输.      IP提供不可靠,无连接的数据报传送服务. ...

  3. Java学习笔记——Java程序运行超时后退出或进行其他操作的实现

    当程序进入死循环或者由于其他原因无法自行终止的时候,就需要强制退出程序了. 对于开发软件 Eclipse ,在程序执行超时后,可以点击 Terminate 按钮强制退出. 那么,我们可不可以通过程序设 ...

  4. 模块化与MVC

    [javascript激增的思考02]模块化与MVC 前言 之前我们遇到了这么一个项目,也就是我们昨天提到的,有很多的小窗口的,昨天说的太抽象了,今天我们再来理一理什么是小窗口(后面点说下),当时由于 ...

  5. ExtJS初接触 - 在项目中使用ExtJS

    ExtJS初接触 - 在项目中使用ExtJS 今天ExtJS官网发布了ExtJS最新正式版4.2.1.Ext JS 4.2.1 正式版 下载 ExtJS为开发者在开发富客户的B/S应用中提供丰富的UI ...

  6. Web前端优化需要注意的点

    关键在于:如何提高页面访问速度:如何减少服务器负载和带宽压力: 1.      cache:包括数据库表的缓存,浏览器缓存,服务器端缓存(代理服务器缓存,CDN缓存,反向代理服务器缓存),web应用程 ...

  7. 高反差保留滤镜学习OpenCV:滤镜系列(11)——高反差保留

    这几周笔者几篇文章介绍了改高反差保留滤镜的文章. 关联文章的地址 高反差保留就是高通滤波 r=(pix[x,y]-avg(R))/128 pix[x,y]*r+128*(1-r) #include & ...

  8. Linux文件系统十问,你知道吗?

    关于文件系统,相信大家都不陌生.身为攻城狮的我们几乎天天都会与之打交道,但是细深剖一下,其中又有多少是我们理解深度不够的呢.那么让我们一起来看一下下面这一组Linux文件系统相关的问题吧: 1.机械磁 ...

  9. 结构-行为-样式-Js函数节流

    最近一个面试官问了我一个函数节流的问题,然后感觉自己工作中遇到过这个问题,但是不知道这种形式就是函数节流.下面我来说下这个Js的高级问题,思路:函数节流就是防止用户高频调用某个事件而做的Js层面的处理 ...

  10. iOS开发-OC语言 (四)数组

    知识点 1.NSArray 2.NSMutableArray 1.数组的基本用法: 2.数组的遍历 3.数组排序 ===========   NSArray  不可变数组  ============= ...