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. 转:携程App的网络性能优化实践

    http://kb.cnblogs.com/page/519824/ 携程App的网络性能优化实践 受益匪浅的一篇文章,让我知道网络交互并不是简单的传输和接受数据.真正的难点在于后面的性能优化 下面对 ...

  2. 配置Jenkins的slave节点的详细步骤适合windows等其他平台(转)

    @  新建一个slave节点在Jenkins服务器上 1,进入Jenkins的主界面,进入“Manage Jenkins” 页面: 2,点击如下图中的“Manage  Nodes”: 3,进入页面后点 ...

  3. 在 Perl看来, 字符串只有两种形式. 一种是octets, 即8位序列, 也就是我们通常说的字节数组. 另一种utf8编码的字符串, perl管它叫string. 也就是说: Perl只熟悉两种编

    在 Perl看来, 字符串只有两种形式. 一种是octets, 即8位序列, 也就是我们通常说的字节数组. 另一种utf8编码的字符串, perl管它叫string. 也就是说: Perl只熟悉两种编 ...

  4. 关于UIText换行

    话不多说,直接上代码 --代码是lua的,c++也一样 local text = ccui.Text:create("text can line wrap text can line wra ...

  5. CuSparse 第一章

    (部分翻译) 第一章 介绍 1. 命名惯例 CUSPARSE 包含了一系列处理稀疏矩阵的基本的线性代数子程式.是cuda函数库的一部分,从C,C++中调用. 该库例程可以分为四类: 第一层:在稠密向量 ...

  6. 怎样建立一个bower私库

    本教程适用于centos 安装之前 检查nodejs 假设没安装nodejs依照下面步骤安装 $ su - $ yum install openssl-devel $ cd /usr/local/sr ...

  7. linux: Ubuntu安装samba的问题

    Ubuntu安装samba的问题 http://blog.csdn.net/jk110333/article/details/8920841 root@ubuntu:~# apt-get instal ...

  8. linux shell编程指南第十一章------------合并与分割2

    c u t用来从标准输入或文本文件中剪切列或域.剪切文本可以将之粘贴到一个文本文件. 下一节将介绍粘贴用法. c u t一般格式为: cut [options] file1 file2 下面介绍其可用 ...

  9. Spring MVC 遇到的一点点问题(转)

    今天下午下班之前看了看凯歌给的Spring Training的教程的lab篇,我之前有跟着做没有遇到什么问题,但是到了跟Spring MVC integrating的时候,遇到一点点有趣的事情. 这个 ...

  10. php导出excel数据

    提供两种导出excel方法 1 最简单的导出excel header('Content-Type: application/vnd.ms-excel'); //设置文件类型   也可以将 vnd.ms ...