我可以在连接异步套接字时发送字符串(或特定数字)吗
Posted
技术标签:
【中文标题】我可以在连接异步套接字时发送字符串(或特定数字)吗【英文标题】:Can I send a string (or a specific number) on connecting an Async socket 【发布时间】:2014-07-08 13:38:28 【问题描述】:我想发送一个唯一标识符 A 我连接一个 IPC 套接字。
IPEndPoint epServer = new IPEndPoint(aryLocalAddr[0], port);
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Blocking = false;
socket.BeginConnect(epServer, new AsyncCallback(ConnectCallBack), socket);
有没有办法向套接字添加一些东西,以便监听器(接受器)能够获取这个唯一的 ID?我想在连接步骤中执行此操作。
【问题讨论】:
这是您的协议应该规定的内容,例如“当客户端连接时,它会生成一个 [UUID] 并在 [connect] 消息中将其发送到服务器”。 【参考方案1】:您受到协议的限制。您只能发送可以通过设置的 Frame 发送的内容。
TCP on Wikipedia
在数据交换发生之前,您首先必须进入“ESTABLISHED”状态。
Connect()
将您带到那里,因此您无法在连接之前发送数据,因为您的连接尚未建立。
但是,您可以连接到服务器,然后立即发送您的第一条消息。您的服务器可以等待您的客户端的第一条消息,如果它不是预期的消息,则关闭连接。
【讨论】:
以上是关于我可以在连接异步套接字时发送字符串(或特定数字)吗的主要内容,如果未能解决你的问题,请参考以下文章
使用 ZeroMQ Socket 时,我可以从一个线程 send() 并从另一个线程发送 recv() 到同一个套接字吗?
在使用 websockets 时,我可以在发送查询字符串时传入标头吗?