【发布时间】:2014-07-02 10:51:39
【问题描述】:
我第一次尝试用 C 语言进行套接字编程(适用于 Unix)。有没有办法通过使用某种形式的全局变量(例如套接字描述符)来保持连接打开,然后可以通过多种方法访问这些变量? (为了消除多次调用 connect 的需要 + 拥有一个持续的连接而不是为每个必须执行的操作创建一个新的连接更有效)。
【问题讨论】:
-
我不确定我是否理解您的问题。如果您有一个已连接的套接字(不会因某些错误等而断开连接),并且您不会丢失 fd,那么您几乎可以无限期地使用它。你能稍微具体一点你想要什么吗?
-
嗨@Hasturkun,我有一个方法,我最初创建套接字,然后在该套接字上调用连接函数。我创建了一个全局变量,它保存在该方法中定义的套接字描述符。然后我使用该(全局)描述符从不同的方法向服务器发送更多数据(显然没有调用连接,因为连接尚未关闭)。但是,服务器没有接收到从第二种方法发送的数据。
-
如果您的描述正确,应该没有问题。
send()调用是否返回错误?我建议通过调试器跟踪代码以确保没有发生任何愚蠢的事情(例如,有人覆盖了套接字描述符,或者保存了指向函数局部变量的指针而不是值等)。