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通讯,但是上一个例子只能实现一个服务端和一个客户端之间的通讯,如果有多个客户端连接服务端,则需要通过多线程技术来实 ...
随机推荐
- Can't connect to MySQL server on 'XXX' (13)
出现can't connect to MySQL server using '' (13)的错误,结果是 SELinux 不让 httpd 访问外网,一开始还以为是iptables造成的,关闭之后发现 ...
- 15-UIKit(view布局、Autoresizing)
目录: 1. 纯代码布局 2. 在View中进行代码布局 3. Autoresizing 回到顶部 1. 纯代码布局 纯代码布局分VC下和V下 [MX1-layout-code] 在VC下覆盖view ...
- java模拟实现生产者---消费者问题
本文章为小编原创,请尊重文章的原创性,转载请注意写明转载来源:http://blog.csdn.net/u012116457 已知技术參数: 生产者消费者问题,描写叙述一组生产者向一组消费者提供产品/ ...
- iphone分辨率终极指南(含有iphone6/6+)
如文本不清楚.请 "对->图片另存为" 下载大图后, ------------------------- 原文及翻译文本 Points点 At the beginning, ...
- Join的实现步骤 以及连接的概念
Join的实现步骤 以及连接的概念 我们常说连接有三种,即 交叉连接.内连接.外连接,这三者的概念很容易模糊,现在我们先放下概念,搞清楚完整连接实现的步骤: 一个完整的连接有三个步骤:.做笛卡儿积: ...
- MFC 只启动一个程序实例
问题描述: 我们开发过程中可能会经常遇到,只启动一个程序实例.即一个程序启动之后,如果再次执行该程序,将会恢复之前打开的程序,而不是打开一个新的程序. 实现原理:利用FindWindow/FindWi ...
- oracle忘记密码,修改密码,解锁
忘记密码修改密码: alter user system identified by values abc111; 修改后的用户名system,密码abc111. 解锁: cmd->输入 :sql ...
- Android 计时与倒计时
方法一 Timer与TimerTask(Java实现) [java] view plain copy print ? public class timerTask extends Activit ...
- [置顶] 程序员面试之道(《程序员面试笔试宝典》)之看着别人手拿大把的offer,不淡定了怎么办?
不管是在哪里,不管发生什么事,不要随便放下自己. ——<当男人恋爱时> 很多求职者都会面临一个问题:别人手拿大把大把的offer了,而自己却是两手空空,别人签约之后已经过着“猪狗不如”的悠 ...
- 调用ShellExecute所须要头文件
调用ShellExecute所须要头文件 #include "windows.h " #include "shellapi.h "