C#写的客户端连接 php的服务器端的小例子
C#写的客户端连接 php的服务器端的小例子
php的server 端
- <?php
- // server.php
- set_time_limit( 0 );
- ob_implicit_flush();
- $socket = socket_create( AF_INET, SOCK_STREAM, SOL_TCP );
- socket_bind( $socket, '127.0.0.1', 8880 );
- socket_listen($socket);
- $acpt=socket_accept($socket);
- echo "> Acpt!\n";
- while ( $acpt ) {
- echo "> ";
- $words= trim(fgets(STDIN));
- if(strlen($words) === 0) $words = "\n";
- socket_write($acpt,$words);
- $hear=socket_read($acpt,1024);
- echo "client>" . $hear . "\n" ;
- if("bye"==$hear){
- socket_shutdown($acpt);
- break;
- }
- usleep( 1000 );
- }
- socket_close($socket);
- echo "> bye bye\n";
- ?>
以交互式方法运行:
- php -a server.php
C#写的客户端
- public class Client
- {
- private static byte[] result = new byte[1024];
- public string serverIp = "127.0.0.1";
- public int severPort = 8880;
- public Client(string serverIp, int serverPort)
- {
- this.serverIp = serverIp;
- this.severPort = serverPort;
- }
- public void start()
- {
- //设定服务器IP地址
- IPAddress ip = IPAddress.Parse(serverIp);
- Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
- try {
- clientSocket.Connect(new IPEndPoint(ip, severPort));
- Console.WriteLine("连接服务器成功");
- } catch {
- Console.WriteLine("连接服务器失败");
- return;
- }
- int receiveLength;
- while (clientSocket.Connected) {
- receiveLength = clientSocket.Receive(result);
- string sv_word = Encoding.ASCII.GetString(result, 0, receiveLength);
- Console.WriteLine("Sever> {0}", sv_word);
- if (sv_word.Trim() == "bye") break;
- Console.Write("> ");
- string words = Console.ReadLine();
- if (string.IsNullOrEmpty(words)) words = "\n";
- clientSocket.Send(Encoding.ASCII.GetBytes(words));
- if (words.Trim() == "bye") break;
- }
- if(clientSocket.Connected) clientSocket.Close();
- Console.WriteLine("> bye bye");
- }
- }
加入引入
- using System.Net;
- using System.Net.Sockets;
- using System.Threading;
在某处调用
- new Client("127.0.0.1", 8880).start();
C#写的客户端连接 php的服务器端的小例子的更多相关文章
- 配置ORACLE 客户端连接到数据库
--================================= -- 配置ORACLE 客户端连接到数据库 --================================= Oracle ...
- (3.10)mysql基础深入——mysqld 服务器与客户端连接过程 源码分析【待写】
(3.10)mysql基础深入——mysqld 服务器与客户端连接过程 源码分析[待写]
- 一个I/O线程可以并发处理N个客户端连接和读写操作 I/O复用模型 基于Buf操作NIO可以读取任意位置的数据 Channel中读取数据到Buffer中或将数据 Buffer 中写入到 Channel 事件驱动消息通知观察者模式
Tomcat那些事儿 https://mp.weixin.qq.com/s?__biz=MzI3MTEwODc5Ng==&mid=2650860016&idx=2&sn=549 ...
- 设置客户端连接PostgreSQL不需要密码
平常工作中,有时需要远端连接 PostgreSQL 数据库做些维护,例如远端备份等:如果备份脚本写在远端机器,备份的时候会弹出密码输入提示,那么脚本就不能后台执行,这里总结了几种不弹出密码输入提示的方 ...
- Zookeeper学习记录及Java客户端连接示例
1. Zookeeper 1.1 简介 ZooKeeper is a centralized service for maintaining configuration information, na ...
- zookeeper设置客户端连接超时被expired
在网络环境非常差的情况下,使用zookeeper集群往往会遇到连接expired了: 客户端提示连接从ZOO_CONNECTION_STATE变为ZOO_EXPIRED_SEESION_STATE,然 ...
- redis客户端连接异常
本文参考:http://mdba.cn/2015/04/02/redistwemproxy-%e5%ae%a2%e6%88%b7%e7%ab%af%e8%bf%9e%e6%8e%a5%e5%bc%82 ...
- atitit.客户端连接oracle数据库的方式总结
客户端连接oracle数据库的方式总结 目录 Java程序连接一般使用jar驱动连接..... 桌面GUI一般采取c语言驱动oci.dll 直接连接... 间接连接(需要配置tns及其envi var ...
- java socket通讯(二)处理多个客户端连接
通过java socket通讯(一) 入门示例,就可以实现服务端和客户端的socket通讯,但是上一个例子只能实现一个服务端和一个客户端之间的通讯,如果有多个客户端连接服务端,则需要通过多线程技术来实 ...
随机推荐
- Python之路day4
坚持就是胜利.今天零下14度,从教室出来的路上真的很冷很冷,希望这个冬天自己不会白过,春暖花开的时候一定要给世界一个更好的自己. 原本以为day3的作业自己做得挺好的,没想到只得了B+.必须要加油了, ...
- QT序列化操作(比较复杂和完善)
应用需求: 在网盘开发过程中有这样一个需求,即对文件版本进行控制,即记录文件版本的更替信息,这里说的更替信息仅仅是记录不同时刻的文件变化,即文件的增.删.改.重命名等操作.在每个待监控的目录下都会保存 ...
- Windows Azure 安全最佳实践 - 第 6 部分:Azure 服务如何扩展应用程序安全性
多种Windows Azure服务可以帮助您将应用程序安全性扩展到云. 有三种服务可提供多个提供程序之间的身份标识映射.内部部署数据中心间的连接和相互发送消息的应用程序功能(无论应用程序位于何处). ...
- gitflow 在windows下的安装方法
Git flow是git的一个扩展集,它基于Vincent Driessen的分支模型,可以用来简化代码的版本发布流程. 本文讲述如何为msysgit安装git flow. 下载getopt.exe ...
- 重新签名apk文件(手工用命令行)
re-sign.jar中后自动去除签名这个方法,经试验不可用! 1.去除准备重新签名SinaVoice.apk软件本身的签名 将apk文件后缀改为.zip,然后从winrar中删除META-INF文件 ...
- urllib模块
python爬虫-urllib模块 urllib 模块是一个高级的 web 交流库,其核心功能就是模仿web浏览器等客户端,去请求相应的资源,并返回一个类文件对象.urllib 支持各种 web ...
- Ajax Post提交事例及SpringMVC注解@RequestMapping取不到参数值解决办法
var xmlHttp; //定义变量,用来创建xmlHttp对象 function ajaxfunction(url,onreadystatechangMethod,param){ // 创建xml ...
- SharePoint 2013的100个新功能之搜索(二)
一:名称建议 人员搜索中新的“名称建议”功能,微软引入了一种简单.直观的方式来根据名称找到用户.输入一个或多个字符,查看全部以其开头的名称,在所有的用户描述数据库都可用,在人员索引中也因此一样可用.该 ...
- 基于visual Studio2013解决面试题之1503最大公约数最小公倍数
题目
- 内嵌W5100的网络模块WIZ812MJ--数据手册
1.简介 WIZ812MJ是一款内嵌了W5100(TCP/IP硬件芯片,内置PHY).MAG-JACK(带变压器的RJ45)和其他胶连逻辑的网络模块.它可以当作一个组件使用,而且不需要为W5100和变 ...