1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > php编写TCP服务端和客户端程序

php编写TCP服务端和客户端程序

时间:2022-01-01 16:19:47

相关推荐

php编写TCP服务端和客户端程序

From:/anda0109/article/details/46655301

1、修改php.ini,打开extension=php_sockets.dll

2、服务端程序SocketServer.php

[php]view plaincopyprint? <?php//确保在连接客户端时不会超时 set_time_limit(0);//设置IP和端口号 $address="127.0.0.1";$port=3046;/***创建一个SOCKET*AF_INET=是ipv4如果用ipv6,则参数为AF_INET6*SOCK_STREAM为socket的tcp类型,如果是UDP则使用SOCK_DGRAM*/$sock=socket_create(AF_INET,SOCK_STREAM,SOL_TCP)ordie("socket_create()fail:".socket_strerror(socket_last_error())."/n");//阻塞模式 socket_set_block($sock)ordie("socket_set_block()fail:".socket_strerror(socket_last_error())."/n");//绑定到socket端口 $result=socket_bind($sock,$address,$port)ordie("socket_bind()fail:".socket_strerror(socket_last_error())."/n");//开始监听 $result=socket_listen($sock,4)ordie("socket_listen()fail:".socket_strerror(socket_last_error())."/n");echo"OK\nBindingthesocketon$address:$port...";echo"OK\nNowreadytoacceptconnections.\nListeningonthesocket...\n";do{//neverstopthedaemon //它接收连接请求并调用一个子连接Socket来处理客户端和服务器间的信息 $msgsock=socket_accept($sock)ordie("socket_accept()failed:reason:".socket_strerror(socket_last_error())."/n");while(1){//读取客户端数据 echo"Readclientdata\n";//socket_read函数会一直读取客户端数据,直到遇见\n,\t或者\0字符.PHP脚本把这写字符看做是输入的结束符. $buf=socket_read($msgsock,8192);echo"Receivedmsg:$buf\n";if($buf=="bye"){//接收到结束消息,关闭连接,等待下一个连接 socket_close($msgsock);continue;}//数据传送向客户端写入返回结果 $msg="welcome\n";socket_write($msgsock,$msg,strlen($msg))ordie("socket_write()failed:reason:".socket_strerror(socket_last_error())."/n");}}while(true);socket_close($sock);?>

3、客户端程序SocketClient.php[php]view plaincopyprint? <?phpset_time_limit(0);$host="127.0.0.1";$port=3046;$socket=socket_create(AF_INET,SOCK_STREAM,SOL_TCP)ordie("Couldnotcreatesocket\n");$connection=socket_connect($socket,$host,$port)ordie("Couldnotconnetserver\n");socket_write($socket,"hellosocket")ordie("Writefailed\n");while($buff=socket_read($socket,1024,PHP_NORMAL_READ)){echo("Responsewas:".$buff."\n");echo("inputwhatyouwanttosaytotheserver:\n");$text=fgets(STDIN);socket_write($socket,$text);}socket_close($socket);?>

4、测试

运行服务端程序:C:\wamp\bin\php\php5.4.16\php.exe C:\wamp\www\SocketServer.php

运行客户端程序:C:\wamp\bin\php\php5.4.16\php.exe C:\wamp\www\SocketClient.php

5、其流程与C很相似,实际上就是封装了C的socket。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。