【实验室笔记】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类型的表示整个报文长 ...
随机推荐
- JavaEE:response响应和request请求
Web服务器接收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象.和代表响应的response对象.request和response对象既然代表请求和响应,那么我 ...
- linux history 命令详解
linux history 命令详解 显示命令执行时间 linux shell 具有history 功能,即会记录已经执行过的命令,但是默认是不显示命令的执行时间,命令的执行时间,history 已经 ...
- 将SQL获取的信息传递到Email中
将SQL获取的信息传递到Email中 最近在为公司财务开发一个邮件通知时遇到了一个技术问题.原来我设计SSIS的是每天将ERP系统支付数据导出到财务支付平台后 Email 通知财务,然后财务到支付平台 ...
- c# 关于10进制和16进制转换以及显示
直接举例说明: int i = 15;//一个10进制数 string txt = Convert.ToString(i,16);//将上面10进制以16进制形式显示为f string s = &qu ...
- STM8S TIM4 初始化设置
#define TIM4_DIV1 (unsigned char)0 #define TIM4_DIV2 (unsigned char)1 #define TIM4_DIV4 (unsigned ch ...
- phpcms 2008 后台发文章chrome和firefox文章不能上传图片的问题
/web/fckeditor/editor/dialog/fck_image.html /web/fckeditor/editor/dialog/fck_image/fck_image.js 这两个文 ...
- for惠普2013实习生
似乎快两个月了,惠普招实习生的时间好像确实有点久. 记得是从五月中旬的时候,惠普来学校招实习生的.因为没能够去腾讯,能拿到惠普的实习生offer也是我所愿了. 记得宣讲的那天,兴冲冲的过去了,惠普的一 ...
- Python学习入门基础教程(learning Python)--2.3.3Python函数型参详解
本节讨论Python下函数型参的预设值问题. Python在设计函数时,可以给型参预设缺省值,当用户调用函数时可以不输入实参.如果用户不想使用缺省预设值则需要给型参一一赋值,可以给某些型参赋值或不按型 ...
- Python pandas 0.19.1 Intro to Data Structures 数据结构介绍 文档翻译
官方文档链接http://pandas.pydata.org/pandas-docs/stable/dsintro.html 数据结构介绍 我们将以一个快速的.非全面的pandas的基础数据结构概述来 ...
- [ios2] CABasicAnimation【转】
caanimation 整理了解 http://geeklu.com/2012/09/animation-in-ios/ 几个可以用来实现热门APP应用PATH中menu效果的几个方法 +(CABa ...