【实验室笔记】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类型的表示整个报文长 ...
随机推荐
- spring.net AOP通知类型
上篇介绍了spring.net AOP的基本实现,其中有说到通知类型,首先在这里补充解释一下.最后出一个异常通知的实例,因为他的实现和别的通知有些不一样. 1.拦截环绕通知:在Spring中最基础的通 ...
- kubernetes入门之快速部署
角色说明 这里主要有三个角色,分别部署不同的服务. 角色 服务 etcd etcd master kube-apiserver/kube-scheduler/kube-controller node ...
- angularjs控制器之间通信,事件通知服务
service要记住一点就是所有的services都是singleton(单例)的,service更多的是做一些业务逻辑,数据交互.当然,利用单例这特点也可以用来做不同控制器间的通信.控制器间的通信也 ...
- TCP/IP传输层,你懂多少?
1. 传输层的主要功能是什么?2. 传输层如何区分不同应用程序的数据流?3. 传输层有哪些协议?4. 什么是UDP协议?5. 为什么有了UDP,还需要TCP?6. 什么是TCP协议?7. 怎么理解协议 ...
- mybatis使用@param后掉的坑
项目里面的一个分页拦截器内某段代码需要判断传入的参数是否属于摸个特定的类,如果不是就直接执行下面的流程,坑爹的@param,在DAO里传入的参数前面加上了这个注解,mabaits内部将传入的参数变成了 ...
- Android 架构艺术之MVP
MVP是Google官方发布的Android开发相关的架构知识.本文要讲解的是一种最基本的MVP的实现方式,它使用手动的依赖注入来提供具有本地和远程数据源的存储库.异步任务处理回调. 基本的MVP的项 ...
- .NET基础——数组
这一篇,我们来看C#中的数组. 1. 数组的概念 数组:存储相同类型多个数据元素的容器 数组的声明和初始化: 在创建数组的时候,必须指定数组的长度 ]; ,, }; ] { , , };//数组元素的 ...
- oracle——用户
新增用户 用system用户登录 CREATE USER TEST1 IDENTIFIED BY TEST1; CREATE USER:创建用户命令,后跟用户名: IDENTIFIED BY:后跟密码 ...
- (一)Harbor安装 -- 企业级Registry仓库
根据Harbor官方描述: Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全.标识和管理等,扩展了开源Docker Distri ...
- 供求WAP-VUE 笔记
记录项目的经历 1. 项目简介 1. 项目采用 vue.js 显示数据的 wap 页面, v-resourse 异步请求, v-router 路由(暂时没用) 2. 采用 flex 布局页面 2. 页 ...