热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C#和PHPSocket服务器与客户端通信实例代码

后端开发|C#.Net教程C#,PHP,Socket后端开发-C#.Net教程这个例子只是简单实现了如何使用Socket类实现面向连接的通信。景区售票.net源码,ubuntu编写

后端开发|C#.Net教程C#和PHP Socket服务器与客户端通信实例代码
C#,PHP,Socket
后端开发-C#.Net教程
这个例子只是简单实现了如何使用 Socket 类实现面向连接的通信。
景区售票 .net源码,ubuntu编写c代码,网络爬虫常见软件,把php直接改成php3,vue中seolzw
注意:此例子的目的只是为了说明用套接字写程序的大概思路,而不是实际项目中的使用程序。在这个例子中,实际上还有很多问题没有解决,如消息边界问题、端口号是否被占用、消息命令的解析问题等。。
php 学生系统源码,ubuntu中制表怎么,tomcat8w有什么区别,魔女的小爬虫,php读取数据库数据后排序,seo托管机构lzw
下面是两个程序的代码,(两个程序均为控制台程序)
付费查询服务源码,ubuntu需要的配置,爬虫算法视频教学,php合并文档,seo标题检查lzw
先发服务端的(Server)完整代码如下:

引入命名空间:

using System.Net.Sockets;using System.Net;using System.Threading;

完整代码如下:

namespace SocketServer{ class Program { private static byte[] result = new byte[1024]; private static int myProt = 8885; //端口 static Socket serverSocket; static void Main(string[] args) { //服务器IP地址 IPAddress ip = IPAddress.Parse("127.0.0.1"); serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); serverSocket.Bind(new IPEndPoint(ip, myProt)); //绑定IP地址:端口 serverSocket.Listen(10); //设定最多10个排队连接请求 Console.WriteLine("启动监听{0}成功", serverSocket.LocalEndPoint.ToString()); //通过Clientsoket发送数据 Thread myThread = new Thread(ListenClientConnect); myThread.Start(); Console.ReadLine(); } ///

/// 监听客户端连接 /// private static void ListenClientConnect() { while (true) {Socket clientSocket = serverSocket.Accept();clientSocket.Send(Encoding.ASCII.GetBytes("Server Say Hello"));Thread receiveThread = new Thread(ReceiveMessage);receiveThread.Start(clientSocket); } } /// /// 接收消息 /// /// private static void ReceiveMessage(object clientSocket) { Socket myClientSocket = (Socket)clientSocket; while (true) {try{ //通过clientSocket接收数据 int receiveNumber = myClientSocket.Receive(result); Console.WriteLine("接收客户端{0}消息{1}", myClientSocket.RemoteEndPoint.ToString(), Encoding.ASCII.GetString(result, 0, receiveNumber));}catch(Exception ex){ Console.WriteLine(ex.Message); myClientSocket.Shutdown(SocketShutdown.Both); myClientSocket.Close(); break;} } } }}

以上是服务端(server)的完整代码。

客户端(Client)的完整代码如下:

引入命名空间:

using System.Net;using System.Net.Sockets;using System.Threading;

完整代码:

namespace SocketClient{ class Program { private static byte[] result = new byte[1024]; static void Main(string[] args) { //设定服务器IP地址 IPAddress ip = IPAddress.Parse("127.0.0.1"); Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); try {clientSocket.Connect(new IPEndPoint(ip, 8885)); //配置服务器IP与端口Console.WriteLine("连接服务器成功"); } catch {Console.WriteLine("连接服务器失败,请按回车键退出!");return; } //通过clientSocket接收数据 int receiveLength = clientSocket.Receive(result); Console.WriteLine("接收服务器消息:{0}",Encoding.ASCII.GetString(result,0,receiveLength)); //通过 clientSocket 发送数据 for (int i = 0; i <10; i++) {try{ Thread.Sleep(1000); //等待1秒钟 string sendMessage = "client send Message Hellp" + DateTime.Now; clientSocket.Send(Encoding.ASCII.GetBytes(sendMessage)); Console.WriteLine("向服务器发送消息:{0}" + sendMessage);}catch{ clientSocket.Shutdown(SocketShutdown.Both); clientSocket.Close(); break;} } Console.WriteLine("发送完毕,按回车键退出"); Console.ReadLine(); } }}

编译成功后,先运行 服务端(server),再运行客户端(client)即可达到通信效果。

效果如下图:

C#和PHP Socket服务器与客户端通信实例代码

该程序已在局域网测试通过。(192.168.X.X)

php socket通信(tcp/udp)

注意 

1.在socket_bind的时候ip地址不能真回环地址如127.0.0.1

2.server.php后台跑起来的时候 nohup php server.php > /var/tmp/a.log 2>&1 &

一: udp 方式

1) server.php

2) client.php

一: TCP 方式

1)server.php

2) client.php


推荐阅读
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 开发笔记:Java是如何读取和写入浏览器Cookies的
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Java是如何读取和写入浏览器Cookies的相关的知识,希望对你有一定的参考价值。首先我 ... [详细]
  • 怎么在PHP项目中实现一个HTTP断点续传功能发布时间:2021-01-1916:26:06来源:亿速云阅读:96作者:Le ... [详细]
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • 本文记录了在vue cli 3.x中移除console的一些采坑经验,通过使用uglifyjs-webpack-plugin插件,在vue.config.js中进行相关配置,包括设置minimizer、UglifyJsPlugin和compress等参数,最终成功移除了console。同时,还包括了一些可能出现的报错情况和解决方法。 ... [详细]
  • 纠正网上的错误:自定义一个类叫java.lang.System/String的方法
    本文纠正了网上关于自定义一个类叫java.lang.System/String的错误答案,并详细解释了为什么这种方法是错误的。作者指出,虽然双亲委托机制确实可以阻止自定义的System类被加载,但通过自定义一个特殊的类加载器,可以绕过双亲委托机制,达到自定义System类的目的。作者呼吁读者对网上的内容持怀疑态度,并带着问题来阅读文章。 ... [详细]
  • Java SE从入门到放弃(三)的逻辑运算符详解
    本文详细介绍了Java SE中的逻辑运算符,包括逻辑运算符的操作和运算结果,以及与运算符的不同之处。通过代码演示,展示了逻辑运算符的使用方法和注意事项。文章以Java SE从入门到放弃(三)为背景,对逻辑运算符进行了深入的解析。 ... [详细]
author-avatar
等待那个心中的人_212
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有