请问C#中的socket通信服务器端accept函数的使用时机

问题描述

c#的socket编程服务器端一般遵循1.创建socket实例2.bind3.listen4.accept等待客户端链接5.receive/send。。。。等等步骤问题如下:1.请问accept等待链接我看到很多实例是在Form_Load中调用了一次,我在想,只调用了一次如果客户端关掉重新启动,服务器端会不会建立新的客户端链接2.在msdn帮助中说accept函数在链接时会返回一个socket类型的实例,那么在没有客户端和他链接呢,是什么情况?返回一个空的socket实例吗?3.一般如果要进行多客户端和服务器交互,服务器端代码和客户端代码有谁能提供一个自己测试可靠的代码分享下吗,最好将accept那部分详细注释下,谢谢。

解决方案

解决方案二:
引用楼主zcguoji的回复:

问题如下:1.请问accept等待链接我看到很多实例是在Form_Load中调用了一次,我在想,只调用了一次如果客户端关掉重新启动,服务器端会不会建立新的客户端链接

确实有很多实例是这样的,而且msdn上的“范例”就是这样的,造成了许多博客胡乱抄的示例代码也是如此。其实是,这种例子本来就是哄小孩子的。它“就是”仅仅响应第一次客户端连接,就是如此!而你不相信那些人会写出那种垃圾例子来吧?!msdn上的关于通讯部分的例子,基本上都是很烂的,而一般人不相信微软会写这么烂的例子。
解决方案三:
引用楼主zcguoji的回复:

2.在msdn帮助中说accept函数在链接时会返回一个socket类型的实例,那么在没有客户端和他链接呢,是什么情况?返回一个空的socket实例吗?

没有客户端连接时,accept语句会阻塞当前线程,“卡”在这里一直等待。msdn上的“异步Accept”的也极其有害。它使用一个“ManualResetEvent.WaitOne、ManualResetEvent.Set、while死循环”模式来用同步阻塞的语法来写展示BeginAccept语法,实在是坑爹的。真正的异步并发代码,根本不需要ManualResetEvent、WaitOne、while循环。
解决方案四:
引用楼主zcguoji的回复:

3.一般如果要进行多客户端和服务器交互,服务器端代码和客户端代码有谁能提供一个自己测试可靠的代码分享下吗,最好将accept那部分详细注释下,谢谢。

我贴过一个使用TcpListener/TcpClient机制的IOCP机制代码。
解决方案五:
引用3楼sp1234的回复:

Quote: 引用楼主zcguoji的回复:
3.一般如果要进行多客户端和服务器交互,服务器端代码和客户端代码有谁能提供一个自己测试可靠的代码分享下吗,最好将accept那部分详细注释下,谢谢。

我贴过一个使用TcpListener/TcpClient机制的IOCP机制代码。

首先谢谢你的回答,看了受益匪浅,再次表示感谢,我这又遇到了一些通信问题,烦请帮我看看,谢谢http://bbs.csdn.net/topics/391892934
解决方案六:
引用3楼sp1234的回复:

Quote: 引用楼主zcguoji的回复:
3.一般如果要进行多客户端和服务器交互,服务器端代码和客户端代码有谁能提供一个自己测试可靠的代码分享下吗,最好将accept那部分详细注释下,谢谢。

我贴过一个使用TcpListener/TcpClient机制的IOCP机制代码。

有socket类直接操作的代码吗?类似我说的bind,listen等步骤的

时间: 2024-12-25 14:24:00

请问C#中的socket通信服务器端accept函数的使用时机的相关文章

Java Web项目中使用Socket通信多线程、长连接的方法_java

很多时候在javaweb项目中我们需要用到Socket通信来实现功能,在web中使用Socket我们需要建立一个监听程序,在程序启动时,启动socket监听.我们的应用场景是在java项目中,需要外接如一个硬件设备,通过tcp通信,获取设备传上来的数据,并对数据做回应. 先看一下web的监听代码: import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; public class

线程-android中UDP socket通信的问题

问题描述 android中UDP socket通信的问题 我使用两个线程,一个用来发送 数据,一个用来接收数据,先开启接收数据线程,接收到数据之后然后回应给对方,但是发送一直停在SocketAddess s=pacakge.getSocketAddess这一步,pacakge是接收到的包.接收线程是这样的:while(true){ socket.receive(packge);}接收到包之后我开启发送线程就卡在上面 那步了,是不是 socket在处于阻塞状态时不能发送数据包啊? 解决方案 默认是

datagramsocket-flex中的socket通信里bind()与connect()的区别

问题描述 flex中的socket通信里bind()与connect()的区别 根据api里的描述, bind(localPort:int = 0, localAddress:String = "0.0.0.0"):void 将此套接字绑定到指定的本地地址和端口. connect(remoteAddress:String, remotePort:int):void 将套接字连接到指定的远程地址和端口. 那么 q1:他们仅仅是分别绑定本地地址和连接远程地址的区别吗? q2:如果在指定本地

C#使用Protocol Buffer(ProtoBuf)进行Unity中的Socket通信_C#教程

首先来说一下本文中例子所要实现的功能: 基于ProtoBuf序列化对象 使用Socket实现时时通信 数据包的编码和解码 下面来看具体的步骤: 一.Unity中使用ProtoBuf 导入DLL到Unity中, 创建网络传输的模型类: using System; using ProtoBuf; //添加特性,表示可以被ProtoBuf工具序列化 [ProtoContract] public class NetModel { //添加特性,表示该字段可以被序列化,1可以理解为下标 [ProtoMem

Android中使用socket通信实现消息推送的方法详解_Android

原理最近用socket写了一个消息推送的demo,在这里和大家分享一下. 主要实现了:一台手机向另外一台手机发送消息,这两台手机可以随时自由发送文本消息进行通信,类似我们常用的QQ. 效果图: 原理:手机通过socket发送消息到服务器,服务器每接收到一条消息之后,都会把这条消息放进一个messageList里面,服务器会不停地检测messageList是否含有消息,如果有的话就会根据messageList里面item的数据,推送到相应的另一端手机上面. 下面简单画了一个图来说明这个原理: 演示

Android中使用socket通信实现消息推送的方法详解

原理 最近用socket写了一个消息推送的demo,在这里和大家分享一下. 主要实现了:一台手机向另外一台手机发送消息,这两台手机可以随时自由发送文本消息进行通信,类似我们常用的QQ. 效果图: 原理:手机通过socket发送消息到服务器,服务器每接收到一条消息之后,都会把这条消息放进一个messageList里面,服务器会不停地检测messageList是否含有消息,如果有的话就会根据messageList里面item的数据,推送到相应的另一端手机上面. 下面简单画了一个图来说明这个原理: 演

网络编程-socket编程中的accept函数

问题描述 socket编程中的accept函数 一个简单的客户/服务器的实现中,connect成功了,但是accept失败,它的返回值为0,这是怎么回事? 解决方案 已解决,原来是其中 = 的运算级别问题,加了个括号就行了,多谢楼上各位! 解决方案二: 名称 accept() 接收一个套接字中已建立的连接 使用格式 #include <sys/types.h> #include <sys/socket.h> int accept(int sockfd,struct sockaddr

关于socket通信,多线程发送消息

问题描述 关于socket通信,多线程发送消息 最近在多线程中使用socket通信遇到的问题,场景是有多个线程需要用到同一个socket连接进行消息的发送,因为没有订具体的协议,所以对于发送(文本)消息,每次发送端发送1K字节,接收端每次接收1K字节,无效数据用0填充,正常情况下来说都没什么问题,但当接收方接收不过来时,由于发送方设置了发送超时(30ms),send会发出EWOULDBLOCK,这下问题来了,推消息设计时设置超时就是希望对方不收就扔掉, 那么如果收到EWOULDBLOCK 就返回

unity + mfc socket通信问题

问题描述 unity + mfc socket通信问题 新手小白.. 用MFC串口通信写了一个读取GPS仪器数据的程序,想用读取的GPS数据作为位置数据控制unity中物体的运动.Unity与C++之间进行socket通信 按照这篇文章做了一遍,总是提示"服务器连接失败".... 求大神相助!!!! 解决方案 HiSocket---unity中实现socket通信Unity&Socket使用TCP通信学记一