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. 【转】android加载大量图片内存溢出的三种解决办法

    方法一: 在从网络或本地加载图片的时候,只加载缩略图. /** * 按照路径加载图片 * @param path 图片资源的存放路径 * @param scalSize 缩小的倍数 * @return ...

  2. Android移动view动画问题

    http://www.cnblogs.com/eoiioe/archive/2012/08/29/2662546.html Android写动画效果不是一般的麻烦,网上找了好久,终于解决了动画的问题, ...

  3. Java网络编程:利用Java mail包发送电子邮件

    下面代码是利用Java mail包封装了一个发送邮件的类 import java.io.File; import java.util.ArrayList; import java.util.Date; ...

  4. 基于visual Studio2013解决算法导论之008快速排序算法

     题目 快速排序 解决代码及点评 #include <stdio.h> #include <stdlib.h> #include <malloc.h> #in ...

  5. cocos2d-x游戏开发系列教程-坦克大战游戏之子弹和地图碰撞

    上篇文章实现了坦克与地图碰撞的检测, 这篇我们继续完成子弹和地图的碰撞检测. 1.先设计一个子弹类Bullet,如下所示: class Bullet : public CCSprite { publi ...

  6. Java Arrays Tutorial (3)

    Java Arrays Tutorial (3) Data types have a specific set of values. A byte cannot hold a value larger ...

  7. Oracle查看表空间使用情况

     查看表空间使用情况 select upper(f.tablespace_name) "表空间名",        d.tot_grootte_mb "表空间大小(m ...

  8. Android如何监听蓝牙耳机的按键事件

    写在前面: 直接想要代码很简单,你直接把滚动条拉到最底端就可以看到.如果想要十分地了解为什么,那就按照我规划的一步一步来理解.以下测试环境以手头上有的「Bluedio + 红米手机」. 1.蓝牙耳机的 ...

  9. perl学习(9) 实例:取出操作时间最长的100个记录

    需求描述: 日志记录了一次操作的时间,即server端接收包到发送结果到client端的时间,取出操作时间最长的100个记录. 日志信息片段: [2013-09-13 15:23:50,445.500 ...

  10. crm查询记录共享给了哪些人

    有时候,我们须要查询一个记录.共享给了哪些人?怎么做? 第一种做法:是sql的方式 select * from PrincipalObjectAccess where objectid = '5226 ...