[python&php 网络编程]重用socket地址
2015-11-23 16:13
645 查看
1.python写法
2.php写法
转载请标注原文地址:http://blog.csdn.net/ddjohn/article/details/49996669
import socket def reuse_socket_addr(): sock = socket.socket( socket.AF_INET, socket.SOCK_STREAM ) # Get the old state of the SO_REUSEADDR option old_state = sock.getsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR ) print "Old sock state: %s" %old_state # Enable the SO_REUSEADDR option sock.setsockopt( socket.SOL_SOCKET, socket.SO_REUSEADDR, 1 ) new_state = sock.getsockopt( socket.SOL_SOCKET, socket.SO_REUSEADDR ) print "New sock state: %s" %new_state local_port = 8282 srv = socket.socket(socket.AF_INET, socket.SOCK_STREAM) srv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) srv.bind( ('', local_port) ) srv.listen(1) print ("Listening on port: %s " %local_port) while True: try: connection, addr = srv.accept() print 'Connected by %s:%s' % (addr[0], addr[1]) except KeyboardInterrupt: break except socket.error, msg: print '%s' % (msg,) if __name__ == '__main__': reuse_socket_addr()
2.php写法
<?php function reuse_socket_addr(){ $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); // Get the old state of the SO_REUSEADDR option $old_state = socket_get_option($socket, SOL_SOCKET, SO_REUSEADDR); printf("Old sock state: %s\n", $old_state); // Enable the SO_REUSEADDR option socket_set_option($socket,SOL_SOCKET,SO_REUSEADDR, 1); $new_state = socket_get_option($socket, SOL_SOCKET, SO_REUSEADDR); printf("New sock state: %s\n", $new_state); $local_port = 8282; $srv = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); socket_set_option($srv, SOL_SOCKET, SO_REUSEADDR, 1); socket_bind($srv, '127.0.0.1', $local_port); socket_listen($srv); printf("Listening on port: %s ", $local_port); while(true){ $msg = socket_accept($srv); if($msg !== false){ $buf = socket_read($srv, MAXLINE); }else{ $error = socket_strerror(socket_last_error($srv)); printf("%s", $error); } } } reuse_socket_addr();
转载请标注原文地址:http://blog.csdn.net/ddjohn/article/details/49996669
相关文章推荐
- ServletRequest,HttpServletRequest ServletResponse,ServletResponse的区别
- JAVA调用HTTPS双向认证API
- 学习日记--网络通信框架--Volley应用
- 强大的网络通信框架(实现缓存)--第三方开源--volley
- Android 第三方开源:Volley通过网络下载数据
- 一次完整的HTTP请求所经历的7个步骤
- linux网络服务器
- 爬虫搜索基础篇(三)
- android的HttpURLConnection实现post和get
- httpclient提交json参数
- HTTP常用错误码
- http_build_query用法,挺方便的
- In Gradle projects, always use http://schemas.android.com/apk/res-auto
- 转: HTTP协议的头信息详解
- 判断网络状态
- 协议森林08 不放弃 (TCP协议与流通信)
- 三种嵌入式web服务器(Boa / lighttpd / shttpd)的 linux移植笔记 2
- 网络请求Http
- [python&php 网络编程]把socket改成阻塞或非阻塞模式
- 简单的scala实现的网络爬虫