采用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客户端接收和发送数据的更多相关文章

  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. JavaEE:response响应和request请求

    Web服务器接收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象.和代表响应的response对象.request和response对象既然代表请求和响应,那么我 ...

  2. linux history 命令详解

    linux history 命令详解 显示命令执行时间 linux shell 具有history 功能,即会记录已经执行过的命令,但是默认是不显示命令的执行时间,命令的执行时间,history 已经 ...

  3. 将SQL获取的信息传递到Email中

    将SQL获取的信息传递到Email中 最近在为公司财务开发一个邮件通知时遇到了一个技术问题.原来我设计SSIS的是每天将ERP系统支付数据导出到财务支付平台后 Email 通知财务,然后财务到支付平台 ...

  4. c# 关于10进制和16进制转换以及显示

    直接举例说明: int i = 15;//一个10进制数 string txt = Convert.ToString(i,16);//将上面10进制以16进制形式显示为f string s = &qu ...

  5. STM8S TIM4 初始化设置

    #define TIM4_DIV1 (unsigned char)0 #define TIM4_DIV2 (unsigned char)1 #define TIM4_DIV4 (unsigned ch ...

  6. phpcms 2008 后台发文章chrome和firefox文章不能上传图片的问题

    /web/fckeditor/editor/dialog/fck_image.html /web/fckeditor/editor/dialog/fck_image/fck_image.js 这两个文 ...

  7. for惠普2013实习生

    似乎快两个月了,惠普招实习生的时间好像确实有点久. 记得是从五月中旬的时候,惠普来学校招实习生的.因为没能够去腾讯,能拿到惠普的实习生offer也是我所愿了. 记得宣讲的那天,兴冲冲的过去了,惠普的一 ...

  8. Python学习入门基础教程(learning Python)--2.3.3Python函数型参详解

    本节讨论Python下函数型参的预设值问题. Python在设计函数时,可以给型参预设缺省值,当用户调用函数时可以不输入实参.如果用户不想使用缺省预设值则需要给型参一一赋值,可以给某些型参赋值或不按型 ...

  9. Python pandas 0.19.1 Intro to Data Structures 数据结构介绍 文档翻译

    官方文档链接http://pandas.pydata.org/pandas-docs/stable/dsintro.html 数据结构介绍 我们将以一个快速的.非全面的pandas的基础数据结构概述来 ...

  10. [ios2] CABasicAnimation【转】

    caanimation 整理了解  http://geeklu.com/2012/09/animation-in-ios/ 几个可以用来实现热门APP应用PATH中menu效果的几个方法 +(CABa ...