首页

文章

TCP/IP 使用Socket 实现客户端与服务器端通信

发布网友 发布时间:2022-04-19 23:43

我来回答

3个回答

懂视网 时间:2022-04-07 12:24

首先需要先有一个 tcp 服务,我们使用 php中的 socket 系列函数实现

<?php

//创建socket套接字
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
//设置阻塞模式
socket_set_block($socket);
//为套接字绑定ip和端口
socket_bind($socket,'127.0.0.1',3046);
//监听socket
socket_listen($socket,4);

while(true)
{
 //接收客户端请求
 if(($msgsocket = socket_accept($socket)) !== false)
 {
 //读取请求内容
 $buf = socket_read($msgsocket, 8192);
 echo "Received msg: $buf 
";
 $str = "this is a service message";
 //向连接的客户端发送数据 
 socket_write($msgsocket, $str,strlen($str));
 //操作完之后需要关闭该连接否则 feof() 函数无法正确识别打开的句柄是否读取完成
 socket_close($msgsocket);
 }
}

连接 tcp 服务:

使用 socket 系列函数连接

<?php
$st="socket send message";
$length = strlen($st);
//创建tcp套接字
$socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
//连接tcp
socket_connect($socket, '127.0.0.1',3046);
//向打开的套集字写入数据(发送数据)
$s = socket_write($socket, $st, $length);
//从套接字中获取服务器发送来的数据
$msg = socket_read($socket,8190);

echo $msg;
//关闭连接
socket_close($socket);

941968-20190514130701439-1024524680.png使用 fsockopen 连接

<?php
//使用 fsockopen 打开tcp连接句柄
$fp = fsockopen("tcp://127.0.0.1",3046);
$msg = "fsockopen send message";
//向句柄中写入数据
fwrite($fp,$msg);
$ret = "";
//循环遍历获取句柄中的数据,其中 feof() 判断文件指针是否指到文件末尾
while (!feof($fp)){
 stream_set_timeout($fp, 2);
 $ret .= fgets($fp, 128);
}
//关闭句柄
fclose($fp);
echo $ret;

941968-20190514130756115-123283898.png使用 stream_socket_client 连接

<?php
//使用 stream_socket_client 打开 tcp 连接
$fp = stream_socket_client("tcp://127.0.0.1:3046");
$msg = "fsockopen send message";
//向句柄中写入数据
fwrite($fp,$msg);
$ret = "";
//循环遍历获取句柄中的数据,其中 feof() 判断文件指针是否指到文件末尾
while (!feof($fp)){
 stream_set_timeout($fp, 2);
 $ret .= fgets($fp, 128);
}
//关闭句柄
fclose($fp);
echo $ret;

941968-20190514130912284-1578853593.png

相关文章教程推荐:php教程

热心网友 时间:2022-04-07 09:32

之所以称为TCP服务器,是因为服务器端执行TCP的listen(监听连入请求)逻辑;而TCP客户端执行的是connect(请求连接)逻辑。
所以,不能可能让服务器去主动连接客户端端的。追问您好,我想要做的是计算机从多台称重仪上去取数据。计算机是不是服务器?我能不能建立两个线程,在服务端初始化好称重仪的IP地址和端口号,使他们成为socket的源地址,让计算机去主动地connect 某一个socket的源地址?

追答

您最好先看一下称重仪手册,重点关注一下称重仪是否支持Socket通信。如果支持,再进一步查一下称重仪Socket是以服务器方式还是以客户端方式运行。弄清楚这些,问题就好办了!

按经验,第一种方式比较常见!

热心网友 时间:2022-04-07 10:50

对于服务器,你先创建一个套接字(socket),然后bind绑定一个套接地址,然后你在用listen,此时你的服务器会一直阻塞在这,处于监听状态,检查是否有客户端来connect,一旦有的话,你的服务器就会accept。
所以,是你的服务器是处于监听状态,监听是否有客户端,然后由客户端来连接服务器,服务器接受客户端的连接,而不是服务器去连接客户端。追问您好,我想要做的是计算机从两台称重仪上去取数据。计算机是不是服务器?
我能不能建立两个线程,在服务端初始化好称重仪的IP地址和端口号,使他们成为socket的源地址,让计算机去主动地connect 某一个socket的源地址,建立连接?

追答你可以把计算机当做服务器,称重仪当做客户端,在服务器上编写个服务器程序,然后让你的客户端去connect你的服务器(计算机),连接后,你的服务器accept后,你的服务器和客户端就可以TCP通信了,这时你可以把客户端数据发到服务器。当然也可以把算计当客户端,称重仪做服务器,也是可以的。

华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... 陕西职务侵占案立案准则 结婚后我的恋情维系了十年,怎么做到的? 玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 年终会活动策划方案 深度解析:第一财经回放,探索财经新风向 逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? 使用puppeteer实现将htmll转成pdf 内卷时代下的前端技术-使用JavaScript在浏览器中生成PDF文档 【译】将HTML转为PDF的几种实现方案 变形金刚08动画怎么样 变形金刚08动画的问题 变形金刚08动画日语版剧情介绍 高分!换显卡nvidia控制面板被我卸了,重新安装显卡驱动后没了nvidia控... 我的nvidia控制面板被卸载了 怎么找回啊 卸载后 这个画面看着很奇怪_百 ... 李卓彬工作简历 林少明工作简历 广东工业职业技术学院怎么样 郑德涛任职简历 唐新桂个人简历 土地入股的定义 ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 安徽省徽商集团有限公司经营理念 2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 什么是体育理念 万里挑一算彩礼还是见面礼 绿萝扦插多少天后发芽 绿萝扦插多久发芽 扦插绿萝多久发芽 炖牛排骨的做法和配料 网络诈骗定罪标准揭秘 “流水不争先”是什么意思? mc中钻石装备怎么做 为什么我的MC里的钻石块是这样的?我想要那种。是不是版本的问题?如果是... 带“偷儿”的诗句 “君不见巴丘古城如培塿”的出处是哪里 带“奈何”的诗句大全(229句) 里翁行()拼音版、注音及读音 客户端与服务器通信,有哪些方法? 安卓手机客户端可以通过哪些方式与PC服务器端通信 web客户端与服务器之间的通信的基本过程 java网络编程应该怎样在客户端和服务器间实现通信? tcp客户端和服务器的关系 Java 服务端和客户端的通信 服务器计算机端口和客户端计算机端口,如何实现相... 什么叫客户端与服务器端通信 进程之间的客户端与服务端是如何实现通讯的 请问英文中"party"和"prom"都是舞会的意思,究竟有什么区别?? 怎么彻底卸载wps 如何删除wps云空间的文件 wps怎样删页 怎么删除电脑中的wps wps如何卸载 wps删除行怎么删除 罗克韦尔PLC上的REM和PROM这两档是什么意思? 电脑wps怎么卸载 wps最近使用的项目怎么删除 wps中的表格怎么删除 客户端程序和服务器之间通信用的是什么技术? 什么是客户端/服务器通信模式 java写的客户端怎么和服务器端通信 android平台的app 手机客户端和后台服务器怎么进行... 关于服务端与客户端的交互。 小白求教,关于JAVA socket客户端 和服务端的通信 java中,怎样实现cs模式的服务器与客户端的通信 android、ios客户端和服务器通信一般使用什么方式... 简述RAM,ROM,PROM,EPROM和EEPROM之间的区别是什么? 华为手机用什么软件投屏到电视 华为手机之间多屏互动软件 华为畅享7Miracast投屏 ROM RAM PROM EROM分别是什么 速腾速度传感器在什么位置 大众速腾1.6室外温度传感器在什么地方? 一汽大众速腾机油压力传感器在哪? 大众速腾离合器传感器在个位置 速腾方向盘角度传感器在什么位置 速腾的驾驶员侧碰撞传感器在哪里? 一汽大众速腾1.4tsi发动机机油压力传感器安装在那...
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com