【实验室笔记】C#的Socket客户端接收和发送数据
采用socket发送和接收数据的实验中,服务器采用的是网络助手作为模拟服务器端。
客户端程序流程:
应用的命名空间:
- using System.Net;
- using System.Net.Sockets;
- using System.Threading;
- using System.Timers;
【1】首先新建一个Socket;
【2】建立ip地址应用值;
【3】Socket连接;
【4】判断连接状态;
- Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
- private void button1_Click(object sender, EventArgs e)
- {
- if (textBox1.Text != "" || textBox2.Text != "")
- {
- IPAddress ip = IPAddress.Parse(textBox2.Text);
- try
- {
- s.Connect(ip, Convert.ToInt16(textBox1.Text));
- MessageBox.Show("服务器连接中。。。");
- }
- catch
- {
- MessageBox.Show("服务器连接失败。。。");
- }
- try
- {
- if (s.Connected == true)
- {
- MessageBox.Show("与服务器连接成功");
- aTimer.Enabled = true;
- }
- else
- {
- MessageBox.Show("与服务器连接失败");
- }
- }
- catch
- {
- MessageBox.Show("检测连接状态出错");
- }
- }
- else
- {
- MessageBox.Show("请输入端口号和IP地址");
- }
- }
Socket数据的发送
- private void button2_Click(object sender, EventArgs e)
- {
- if (s.Connected == true)
- {
- try
- {
- string abc = textBox3.Text;
- s.Send(Encoding.ASCII.GetBytes(abc));
- MessageBox.Show("向服务器发送:" + abc);
- }
- catch
- {
- MessageBox.Show("发送失败");
- }
- }
- }
Socket数据接收
数据接收要交给线程去做,然后调用定时器去做,这样会防止在数据接收时,其他程序不可用的状况。
- System.Timers.Timer aTimer = new System.Timers.Timer();
- byte[] res = new byte[];
- private void Form1_Load(object sender, EventArgs e)
- {
- Control.CheckForIllegalCrossThreadCalls = false;
- aTimer.Enabled = false;
- Thread thread1 = new Thread(TimerMange);
- thread1.IsBackground = true;
- thread1.Start();
- }
- void TimerMange()
- {
- aTimer.Elapsed += new ElapsedEventHandler(socket_rev); //定时事件的方法
- aTimer.Interval = ;
- }
- private void socket_rev(object sender, EventArgs e)
- {
- int receiveLength = s.Receive(res, res.Length, SocketFlags.None);
- if (receiveLength > )
- {
- textBox4.Text = Encoding.ASCII.GetString(res, , receiveLength);
- string abc = "HaveReceive";
- s.Send(Encoding.ASCII.GetBytes(abc));
- }
- }
【实验室笔记】C#的Socket客户端接收和发送数据的更多相关文章
- 关于socket客户端接收不定长数据的解决方案
#!/usr/bin/env python3.5 # -*-coding:utf8-*- """ 本实例客户端用于不断接收不定长数据,存储到变量res "&qu ...
- Java基础知识强化之网络编程笔记03:UDP之UDP协议发送数据 和 接收数据
1. UDP协议发送数据 和 接收数据 UDP协议发送数据: • 创建发送端的Socket对象 • 创建数据,并把数据打包 • 调用Socket对象的发送方法,发送数据包 • 释放资源 UDP协议接 ...
- Java基础知识强化之网络编程笔记06:TCP之TCP协议发送数据 和 接收数据
1. TCP协议发送数据 和 接收数据 TCP协议接收数据:• 创建接收端的Socket对象• 监听客户端连接.返回一个对应的Socket对象• 获取输入流,读取数据显示在控制台• 释放资源 TCP协 ...
- C语言Socket-单工通信(客户端向服务器发送数据)
服务端(server) #include <stdio.h> #include <winsock2.h> #pragma comment(lib,"ws2_32.li ...
- java-UDP协议接收和发送数据
UDP发送数据的步骤: A:创建发送端的Socket服务对象 B:创建数据,并把数据打包 C:通过Socket对象的发送功能发送数据包 D:释放资源 public class SendDemo { ...
- Android客户端向服务器端发送数据的流程(1)
原理: android客户端通过使用org.apache.http.impl.client.DefaultHttpClient类来发送数据; 方法介绍: HttpClient是android中提供的一 ...
- C#,COM口,接收,发送数据
这里写一种,COM口的数据接收,发送方法. 1.COMHelper类 /// <summary>初始化串行端口</summary> private SerialPort _se ...
- MM32F0140 UART1 DMA RX and TX 中断接收和发送数据
目录: 1.MM32F0140简介 2.DMA工作原理简介 3.初始化MM32F0140 UART1 4.配置MM32F0140 UART1 DMA接收 5.配置MM32F0140 UART1 DMA ...
- 使用netty4.x客户端接收较大数据量报文时发生的读取不完整bug修复记录
1.先说问题 背景:服务是运行在Linux上的安全网关提供的,TCP协议发送 通过二进制编码的xml字符串 报文,报文头的第一个字段是int类型的表示字节序标记,第二个字段是int类型的表示整个报文长 ...
随机推荐
- 强烈推荐:240多个jQuery插件【转】
强烈推荐:240多个jQuery插件 概述 jQuery 是继 prototype 之后又一个优秀的 Javascript 框架.其宗旨是—写更少的代码,做更多的事情.它是轻量级的 js 库(压缩后只 ...
- IP:网际协议
IP:网际协议 1.概述 IP是TCP/IP协议族中最为核心的协议.所有的TCP,UDP,ICMP,IGMP数据都以IP数据报格式传输. IP提供不可靠,无连接的数据报传送服务. ...
- Java学习笔记——Java程序运行超时后退出或进行其他操作的实现
当程序进入死循环或者由于其他原因无法自行终止的时候,就需要强制退出程序了. 对于开发软件 Eclipse ,在程序执行超时后,可以点击 Terminate 按钮强制退出. 那么,我们可不可以通过程序设 ...
- 模块化与MVC
[javascript激增的思考02]模块化与MVC 前言 之前我们遇到了这么一个项目,也就是我们昨天提到的,有很多的小窗口的,昨天说的太抽象了,今天我们再来理一理什么是小窗口(后面点说下),当时由于 ...
- ExtJS初接触 - 在项目中使用ExtJS
ExtJS初接触 - 在项目中使用ExtJS 今天ExtJS官网发布了ExtJS最新正式版4.2.1.Ext JS 4.2.1 正式版 下载 ExtJS为开发者在开发富客户的B/S应用中提供丰富的UI ...
- Web前端优化需要注意的点
关键在于:如何提高页面访问速度:如何减少服务器负载和带宽压力: 1. cache:包括数据库表的缓存,浏览器缓存,服务器端缓存(代理服务器缓存,CDN缓存,反向代理服务器缓存),web应用程 ...
- 高反差保留滤镜学习OpenCV:滤镜系列(11)——高反差保留
这几周笔者几篇文章介绍了改高反差保留滤镜的文章. 关联文章的地址 高反差保留就是高通滤波 r=(pix[x,y]-avg(R))/128 pix[x,y]*r+128*(1-r) #include & ...
- Linux文件系统十问,你知道吗?
关于文件系统,相信大家都不陌生.身为攻城狮的我们几乎天天都会与之打交道,但是细深剖一下,其中又有多少是我们理解深度不够的呢.那么让我们一起来看一下下面这一组Linux文件系统相关的问题吧: 1.机械磁 ...
- 结构-行为-样式-Js函数节流
最近一个面试官问了我一个函数节流的问题,然后感觉自己工作中遇到过这个问题,但是不知道这种形式就是函数节流.下面我来说下这个Js的高级问题,思路:函数节流就是防止用户高频调用某个事件而做的Js层面的处理 ...
- iOS开发-OC语言 (四)数组
知识点 1.NSArray 2.NSMutableArray 1.数组的基本用法: 2.数组的遍历 3.数组排序 =========== NSArray 不可变数组 ============= ...