C#写的客户端连接 php的服务器端的小例子

php的server 端

  1. <?php
  2. // server.php
  3. set_time_limit( 0 );
  4. ob_implicit_flush();
  5. $socket = socket_create( AF_INET, SOCK_STREAM, SOL_TCP );
  6. socket_bind( $socket, '127.0.0.1', 8880 );
  7. socket_listen($socket);
  8. $acpt=socket_accept($socket);
  9. echo "> Acpt!\n";
  10. while ( $acpt ) {
  11. echo "> ";
  12. $words= trim(fgets(STDIN));
  13. if(strlen($words) === 0) $words = "\n";
  14. socket_write($acpt,$words);
  15. $hear=socket_read($acpt,1024);
  16. echo "client>" . $hear . "\n" ;
  17. if("bye"==$hear){
  18. socket_shutdown($acpt);
  19. break;
  20. }
  21. usleep( 1000 );
  22. }
  23. socket_close($socket);
  24. echo "> bye bye\n";
  25. ?>

以交互式方法运行:

  1. php -a server.php

C#写的客户端

  1. public class Client
  2. {
  3. private static byte[] result = new byte[1024];
  4. public string serverIp = "127.0.0.1";
  5. public int severPort = 8880;
  6. public Client(string serverIp, int serverPort)
  7. {
  8. this.serverIp = serverIp;
  9. this.severPort = serverPort;
  10. }
  11. public void start()
  12. {
  13. //设定服务器IP地址
  14. IPAddress ip = IPAddress.Parse(serverIp);
  15. Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
  16. try {
  17. clientSocket.Connect(new IPEndPoint(ip, severPort));
  18. Console.WriteLine("连接服务器成功");
  19. } catch {
  20. Console.WriteLine("连接服务器失败");
  21. return;
  22. }
  23. int receiveLength;
  24. while (clientSocket.Connected) {
  25. receiveLength = clientSocket.Receive(result);
  26. string sv_word = Encoding.ASCII.GetString(result, 0, receiveLength);
  27. Console.WriteLine("Sever> {0}", sv_word);
  28. if (sv_word.Trim() == "bye") break;
  29. Console.Write("> ");
  30. string words = Console.ReadLine();
  31. if (string.IsNullOrEmpty(words)) words = "\n";
  32. clientSocket.Send(Encoding.ASCII.GetBytes(words));
  33. if (words.Trim() == "bye") break;
  34. }
  35. if(clientSocket.Connected) clientSocket.Close();
  36. Console.WriteLine("> bye bye");
  37. }
  38. }

加入引入

  1. using System.Net;
  2. using System.Net.Sockets;
  3. using System.Threading;

在某处调用

  1. new Client("127.0.0.1", 8880).start();

C#写的客户端连接 php的服务器端的小例子的更多相关文章

  1. 配置ORACLE 客户端连接到数据库

    --================================= -- 配置ORACLE 客户端连接到数据库 --================================= Oracle ...

  2. (3.10)mysql基础深入——mysqld 服务器与客户端连接过程 源码分析【待写】

    (3.10)mysql基础深入——mysqld 服务器与客户端连接过程 源码分析[待写]

  3. 一个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 ...

  4. 设置客户端连接PostgreSQL不需要密码

    平常工作中,有时需要远端连接 PostgreSQL 数据库做些维护,例如远端备份等:如果备份脚本写在远端机器,备份的时候会弹出密码输入提示,那么脚本就不能后台执行,这里总结了几种不弹出密码输入提示的方 ...

  5. Zookeeper学习记录及Java客户端连接示例

    1. Zookeeper 1.1 简介 ZooKeeper is a centralized service for maintaining configuration information, na ...

  6. zookeeper设置客户端连接超时被expired

    在网络环境非常差的情况下,使用zookeeper集群往往会遇到连接expired了: 客户端提示连接从ZOO_CONNECTION_STATE变为ZOO_EXPIRED_SEESION_STATE,然 ...

  7. 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 ...

  8. atitit.客户端连接oracle数据库的方式总结

    客户端连接oracle数据库的方式总结 目录 Java程序连接一般使用jar驱动连接..... 桌面GUI一般采取c语言驱动oci.dll 直接连接... 间接连接(需要配置tns及其envi var ...

  9. java socket通讯(二)处理多个客户端连接

    通过java socket通讯(一) 入门示例,就可以实现服务端和客户端的socket通讯,但是上一个例子只能实现一个服务端和一个客户端之间的通讯,如果有多个客户端连接服务端,则需要通过多线程技术来实 ...

随机推荐

  1. Python 第七篇:异步IO\数据库\队列\缓存

    Gevent协程 Select\Poll\Epoll异步IO与事件驱动 Python连接Mysql数据库操作 RabbitMQ队列 Redis\Memcached缓存 Paramiko SSH Tws ...

  2. Git 将本次修改追加在上一次修改上面

    Git 将本次修改追加在上一次修改上面 git add . git commit --amend 之后就是进入日志提交页面 确保change-Id那条记录出现在最后一行,如: zh-->en 修 ...

  3. 《高质量程序设计指南:C++/C语言》面试题整理

    本试题仅用于考查C++/C程序员的基本编程技能.内容限于C++/C常用 语法,不涉及 数据结构. 算法以及深奥的语法.考试成绩能反映出考生的编程质量以及对C++/C的理解程度,但不能反映考生的智力和软 ...

  4. Swift - 添加、修改、删除通讯录联系人

    使用AddressBook.framework框架,我们除了可以很方便的获取通信录里的联系人.同时,还能对通讯录进行新增.修改.删除联系人操作. (注意:这些操作同查询一样,首先需要发起授权请求) 1 ...

  5. 开源数据库连接池之Tomcat内置连接池

    本篇介绍几种开源数据库连接池,同时重点讲述如何使用Tomcat服务器内置的数据库连接池. 之前的博客已经重点讲述了使用数据库连接池的好处,即是将多次创建连接转变为一次创建而使用长连接模式.这样能减少数 ...

  6. 6.MIL采集和实时显示

    前面讲到的都是离线的图像获取方法,实际中我们做机器视觉都是在线采集图像和处理,处理结果决定了计算机要给出的控制信号如电机运动等,这样就实现了实时视觉反馈运动.MIL中的采集需要Matrox采集板卡的支 ...

  7. xhr的send方法以及node如何处理get和post数据

    起因:看了阮一峰老师的关于上传文件的文章,进行测试,在使用xhr对象的send方法时遇到问题. 遇到的问题是使用send方法传送过去的数据,在node后台无法接收,经过很多次测试,怀疑是不是send与 ...

  8. 阿里巴巴 web前端性能优化进阶路

    Web前端性能优化WPO,相信大多数前端同学都不会陌生,在各自所负责的站点页面中,也都会或多或少的有过一定的技术实践.可以说,这个领域并不缺乏成熟技术理论和技术牛人:例如Yahoo的web站点性能优化 ...

  9. scrum经验

    Scrum是基于过程控制理论的经验方法,倡导自组织团队:其运行框架核心是迭代增量型并行开发,也是“适应性”的软件开发方法.Scrum提供了高度可视化的用于管理软件开发复杂性管理的敏捷项目管理的实践框架 ...

  10. EasyUI - Resizable 调整大小

    效果: html代码: <div id="rr" style="width: 100px; height: 100px; border: 2px solid #cc ...