关于socket编程的小总结

来源:互联网 发布:js target属性值 编辑:程序博客网 时间:2024/06/05 08:11

最近在写一些socket小程序,因为是初次写,所以在一些细节上遇到一些问题,这里说一下我对其中某些问题的理解,如果不正确,欢迎指正。

在我的程序中,我想把发送和接收数据的操作分别放在两个线程中,即发送线程和接收线程。

在最初的实现中,我的两个线程使用的是共同的一个socket以及端口号,接收和发送信息到服务器。服务器通过获得的我的ip及端口号,返回给我发送到服务器的字串。

在实验过程中,发现我启动的2个线程都正常启动,但是只有发送线程在工作,接收线程在select socket时,检测不到有哪个socket是可读的。

1.这是因为socket只能同时进行一种发送或者接收操作,我的写操作率先占用了这个socket,读操作就不能进行了。(有一点不太明白,我的写操作是每隔100ms才写一次,在这个时间段,读操作也“抢占”不了socket吗?)

2.对于这个问题,我试着创建了2个socket,即读和写分别占用一个。 起初绑定在同一个ip和端口上,莫名的成功了,之所以说莫名,是因为后来一直失败,查看msdn知道了,一个ip端口只能绑定一个socket(通常每个套接字地址 (协议/网络地址/端口)只允许使用一次。)。后来绑定到不同的端口上,实验了一下,可以了。

3.为了方便服务器端后续的操作,最终选择了使用一个mutex的操作。

一上午就为了这个,自我感觉挺值的。因为以前一直不喜欢socket编程,现在自己动手操作一下,慢慢来,也不会很难的。

如果我哪里说错了,欢迎指正,一起交流。

0 0