C# socket异步通信实现

public static int Main(String[] args)
{

IPAddress ipAddress = IPAddress.Parse(“192.168.1.104”);
int port = 20000;
IPEndPoint remoteEP = new IPEndPoint(ipAddress, port);
// 生成一个TCP/IP socket.
Socket client = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);
// 与目标终端连接.
connectDone.Reset();
client.BeginConnect(remoteEP,
new AsyncCallback(ConnectCallback), client);
//等待,直到连接程序完成。在ConnectCallback中适当位置有connecDone.Set()语句
connectDone.WaitOne();
.// 发送数据到远程终端.
19.Send(client, “This is a test”);
20.sendDone.WaitOne();
21.
22.// 接收返回数据.
23.Receive(client);
24.receiveDone.WaitOne();
25.
26.// Write the response to the console.
27.Console.WriteLine(“Response received : {0}”, response);
28.
29.// Release the socket.
30.client.Shutdown(SocketShutdown.Both);
31.client.Close();
32.
33.return 0;
34.
35.}
C# Socket异步通讯客户端之连接部分Callback:
1.private static void ConnectCallback(IAsyncResult ar)
2.{
3.
4.// 从state对象获取socket.
5.Socket client = (Socket)ar.AsyncState;
6.
7.// 完成连接.
8.client.EndConnect(ar);
9.
10.Console.WriteLine(“Socket connected to {0}”,
11.client.RemoteEndPoint.ToString());
12.
13.// 连接已完成,主线程继续.
14.connectDone.Set();
15.}
C# Socket异步通讯客户端之数据接收:
1. private static void Receive(Socket client)
2.{
3.
4.// 构造容器state.
5.StateObject state = new StateObject();
6.state.workSocket = client;
7.
8.// 从远程目标接收数据.
9.client.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0,
10.new AsyncCallback(ReceiveCallback), state);
11.
12.}
13.
14.private static void ReceiveCallback(IAsyncResult ar)
15.{
16.
17.// 从输入参数异步state对象中获取state和socket对象
18.StateObject state = (StateObject)ar.AsyncState;
19.Socket client = state.workSocket;
20.
21.//从远程设备读取数据
22.int bytesRead = client.EndReceive(ar);
23.
24.if (bytesRead > 0)
25.{
26.// 有数据,存储.
27.state.sb.Append(Encoding.ASCII.GetString(state.buffer, 0, bytesRead));
28.
29.// 继续读取.
30.client.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0,
31.new AsyncCallback(ReceiveCallback), state);
32.}
33.else
34.{
35.// 所有数据读取完毕.
36.if (state.sb.Length > 1)
37.{
38.response = state.sb.ToString();
39.}
40.// 所有数据读取完毕的指示信号.
41.receiveDone.Set();
42.}
43.
44.}
C# Socket异步通讯客户端之发送数据:
1.private static void Send(Socket client, String data)
2.{
3.// 格式转换.
4.byte[] byteData = Encoding.ASCII.GetBytes(data);
5.
6.// 开始发送数据到远程设备.
7.client.BeginSend(byteData, 0, byteData.Length, 0,
8.new AsyncCallback(SendCallback), client);
9.}
10.
11.private static void SendCallback(IAsyncResult ar)
12.{
13.
14.// 从state对象中获取socket
15.Socket client = (Socket)ar.AsyncState;
16.
17.// 完成数据发送.
18.int bytesSent = client.EndSend(ar);
19.Console.WriteLine(“Sent {0} bytes to server.”, bytesSent);
20.
21.// 指示数据已经发送完成,主线程继续.
22.sendDone.Set();
23.
24.}
C# Socket异步通讯客户端的实现源码内容就基本向你介绍到这里,希望对你了解和学习C# Socket异步通讯有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: c是指光速(speed of light)的符号,也被称为光速常数。它是一个物理学中重要的常数,通常用符号c来表示。 光速是指在真空中光传播的速度,它的数值约等于299,792,458米每秒(或约等于30万公里每秒)。光速是宇宙中最快的速度,而且具有不变性,即在任何非加速的惯性参考系中光速都是常数。 光速在物理学中扮演着非常重要的角色,它不仅是相对论理论的基础,也被用作其他物理学定律的参考。许多物理现象和理论都需要考虑光速对其影响,例如光传播的折射、反射和散射现象都与光速有关。 在相对论理论中,光速还是一个极限速度。根据狭义相对论,任何物体的速度都无法超过光速,而且存在着类似时间膨胀和长度收缩等奇特的相对论效应。 总之,光速是一个非常重要且特殊的物理常数,在物理学的许多领域都扮演着重要角色。它的不变性和作为速度极限的特性使得我们对宇宙和时间的理解产生了重大影响。 ### 回答2: 关于"c"这个字母,它是英文字母表中的第三个字母。在英语中,它的发音为 /siː/。除了在英语中使用外,它也是其他语言中的一个重要字母,如法语、德语、西班牙语等。在这些语言中,字母"c"有时会有不同的发音和用法。 在汉字中,虽然没有类似于"c"这个字母的发音,但是在现代汉语拼音中,有一些音标使用了"c"这个字母,如"ca"、"ce"、"ci"等。这些音标是为了帮助学习者正确发音,并将其建立在英语字母的基础上。同时,汉字的字形中也有一些与字母"c"类似的形状,如"勺"字的部分,有点类似于字母"c"的样子。 此外,"c"也有一些特殊的意义和用法。在数学中,它可以代表圆的周长,符号为"2πr"。在化学中,它代表摄氏度的单位。在计算机科学中,它是一种编程语言。在音乐中,"C"也是一个音符,在唱名上代表do。在体育比赛中,也可以用"c"代表"center"的意思,如篮球比赛中的中锋位置。 总之,"c"是一个广泛使用的字母,在不同的语言和领域都有特殊的意义和用法。无论是在英语中还是在汉语中,它都有着重要的地位,并且被广泛应用在各个领域中。 ### 回答3: 简单点说,c语言是一种高级编程语言,于1972年由贝尔实验室的丹尼斯·里奇开发。它是一种用于开发各种应用程序的通用语言,包括系统软件、应用软件以及嵌入式系统。c语言非常受欢迎,因为它具有简洁、高效、可移植和灵活的特点。 c语言有许多特点和优势。它具有简洁明了的语法,易于学习和理解。同时,c语言提供了丰富的基本数据类型和运算符,使得开发者可以很方便地进行各种计算操作。此外,c语言还提供了丰富的控制结构,如if语句、循环语句等,使得开发者可以轻松地控制程序的流程。 c语言的另一个优势是其高效性。c语言的编译器可以将c代码直接转换为机器代码,这使得c语言程序的执行效率非常高。此外,c语言还允许开发者直接访问计算机的底层硬件资源,如内存和寄存器,从而可以更好地进行优化。 c语言的可移植性也是其受欢迎的原因之一。c语言的标准库提供了一系列的函数和工具,可以很方便地进行跨平台开发。这意味着开发者可以编写一次代码,然后在不同的操作系统和硬件平台上进行编译和运行。 总之,c语言作为一种通用的高级编程语言,具有简洁、高效、可移植和灵活的特点。它已经成为许多计算机科学和软件工程学科的基础,并且在各个领域都得到了广泛应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值