socket c/s分佈式編程

 

SOCKET

Socket接口介于应用程序与硬件之间Socket的理解可以简化为:它是封装了数据流(Stream)的从机器到机器的一条软接线,通过这条软接线,并借助于线两端的收发程序,网络上的机器间实现了信息的交流与互通。分离在软线两端的应用程序(服务器端程序和客户端程序)可以通过调用Socket接口来开发具有TCP/IP网络功能的程序应用。

作为客户端,即要知道服务程序所在房间的房间号(IP地址),又要知道后门的位置(端口)。这样才能正确地进入房间。

 

數據編發:

软线建立完成后,还必须有数据传输的规则,这就是服务端和客户端商量着来的事情了。数据使用什么封装,传送时遵循什么规则(收发协议)、传输是否采用压缩技术和加解密技术等。将数据封装起来,可以让程序的设计者像操作本地文件一样来操作流动在网络上的信息。不同的数据封装方式将决定客户端和服务器端数据的访问方式。编发类型仅限于标量(基本型别)和字符串对象。複雜對象需要我们考虑有关对象到字节的串行化以及字节流到对象的还原问题

 

多線程

作为一种例程服务,必须要考虑其同时服务于多用户的问题。这个问题的解决可以通过线程技术来实现,而且相当简单。基本思路是:在服务器内产生单一的监听Socket,并循环调用accept()等待新的软线连接。Accept()每返回一次,就会带回与特定客户有关的Socket,将该Socket的运作安排到一个独立的线程中,这样其服务就是针对特定客户的了。考虑到多线程对共享资源访问时的同步问题如果处理不当就会造成线程的不安全,必须为临界区设置线程锁。

 

基于TCP的收发协议
   
使用Socket编程,必须明确客户端与服务器端的收发协议。以下是针对该实例定义的收发协议:
客户端:发送报头9999,发送用户名(String),发送密码(String
服务端:接收报头9999,接收用户名和密码,验证登录权限
       
是合法用户:发送报头9999,发送欢迎信息(String
       
是非法用户:发送报头-1,发送警告信息(UTF
客户端:接收报头9999,获取欢迎信息(String

转载于:https://www.cnblogs.com/hnxxcxg/archive/2009/07/09/2940766.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/411378.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux获取笔记本摄像头视频,如何在windows下用ffmpeg抓取笔记本电脑摄像头视频

我有一个很小的python程序,它可以很好地使用ffmpeg的子进程从linux中的网络摄像头(至少对于有内置网络摄像头的笔记本电脑)捕获短视频。在现在我正试图编写同样的程序来捕捉windows中的网络摄像头,我知道我不能使用通用的“/dev/video0”,它在…

GDAL读取Shp问题解决:Unable to open EPSG support file gcs.csv

在GIS软件的开发中,经常用到开源库GDAL读取Shp数据,当shp数据中包含投影信息时,可能会遇到“Unable to open EPSG support file gcs.csv”错误提示,该错误是由于没有设置“GDAL_DATA”引起的。 1.Shpefile文件组成 Shapefile文件指…

[html] HTML5的Geolocation不允许定位后如何于次让它弹起授权定位?

[html] HTML5的Geolocation不允许定位后如何于次让它弹起授权定位? JS应该不能通过API主动再次调起授权定位。 需要提示用户,需要用户手动清除浏览器缓存或者设置app开启浏览器定位功能,之后才能重新弹出。个人简介 我是歌谣,欢…

SAP FI模块与SD、MM的接口配置基本方法

SAP FI模块与SD、MM的接口配置基本方法及解答.问:能否介绍一下FI模块与SD、MM的接口配置基本方法?答:accounting determination autoposting,做FICO的对这两个接口帐号的配置都会感兴趣的啊~ 不过这些东东要讲起来&…

禁用linux系统日志,KB4532432-如果在 Linux 系统上禁用了 IPV6,则会议将失败

症状假设你尝试在 Linux 操作系统(如 Redhat 或 Ubuntu)上安装 Microsoft SQL Server 2019。 如果在操作系统内核级别禁用 IPv6,并且尝试使用 "sudo/opt/mssql/bin/mssql-conf setup" 命令配置 SQL Server,则会在 Linux 控制台和 SQL Server 错…

[html] 如何更改浏览器左上角标题旁的图标?

[html] 如何更改浏览器左上角标题旁的图标&#xff1f; 图标在html的head进行引入,如 <link rel"shortcut icon" href"/favicon.ico" type"image/x-icon">个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#…

利用Date类计算生活时间

今天学习到了Date类还有其他一些常用类&#xff01; 这里就简单使用Date及其一些方法计算生活时间。 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner;public class DateInput {public static void mai…

Request.ServerVariables

2008-07-07 15:45PATH_INFO取的是当前文的路径,效果等同用Request.ServerVariables("URL") 比如说http://www.aaa.com/bbb/ccc/ddd.asp Request.ServerVariables("PATH_INFO")的值就是 /bbb/ccc/ddd.asp 更多ServerVariables Request.ServerVariables(&quo…

linux系统扩展名大全,Linux系统文件扩展名学习

Linux系统下的扩展名并不能标识该文件是属于哪一种类型的文件。文件是否可以执行等都跟文件的扩展名无关。因为文件script没有执行权限&#xff0c;所以也就无法执行&#xff0c;sh-3.2# touch ./scriptsh-3.2# ls -lh ./script-rw-r--r-- 1 root root 0 Dec 28 06:15 ./script…

[html] 写一个类似刮刮卡效果的交互,即鼠标划过时显示号码

[html] 写一个类似刮刮卡效果的交互&#xff0c;即鼠标划过时显示号码 <title>Document</title> <style> *{ margin:0; padding: 0; } .container{ position: relative; width: 600px; height: 400px; margin: 100px auto; border: 1px solid black; } .con…

1.4-1.5 HBase部署及基本使用

一、部署1、准备##先用Apache hadoop ##之前的cdh 服务器先全部停掉##解压HBASE [roothadoop-senior hbase]# tar zxf hbase-0.98.6-hadoop2-bin.tar.gz -C /opt/modules/##启动Apache hadoop &#xff08;hdfs&#xff09; [roothadoop-senior hadoop-2.5.0]# pwd /opt/module…

linux双网口绑定,双网口绑定bond

bond内核模块和称为通道绑定接口的特殊网络&#xff0c;接口将多个网络接口绑定到一个通道。根据选择的绑定模式&#xff0c;通道绑定使两个或者更多个网络接口作为一个网络接口&#xff0c;从而增加带宽或者提供冗余性模式0(平衡轮循) - 轮循策略&#xff0c;所有 接口都采用轮…

Web3d明日之星基于Javascript和OpenGL的技术

和Linux的卫道人袁老相似&#xff0c;我也是VRML/X3D这种Web3D技术的守卫者&#xff0c;虽然我很渺小。 Web已经逐步成为应用程序界面的基础。Firefox开发商Mozilla和制定OpenGL 技术规范的Khronos组织 已经看到了OpenGL技术的广泛应用&#xff0c;他们也想借此为Web创建新的3D…

[html] 如何实现多行文字梯形排版?

[html] 如何实现多行文字梯形排版&#xff1f; 可以利用文字会环绕浮动元素的特性来做&#xff1a;HTML:#box {width: 400px;height: 600px;background-color: red; } #box .float-div{float: left; // 浮动起来clear: both; // 这个很重要&#xff0c;不然会排版出错backgrou…

c语言 字符串map,C语言实现BitMap

BitMap的原理不用多说了。主要说下位操作。我们假设每个基础存储单元为char&#xff0c;则BYTESIZE 8&#xff0c;如果为int则16 or 32。当设置i时&#xff0c;首先ptri/BYTESIZE&#xff0c;到达要操作的那个char。然后对*ptr | 0x01<检查的时候&#xff0c;也是首先ptri/…

MySQL5.7.9安装与配置优化

一、 环境准备 1. 下载软件包 wget http://test.hexin.cn/software/mysql-5.7.9.tar.gz -P /usr/local/src/ wget http://test.hexin.cn/software/cmake-3.4.0.tar.gz -P /usr/local/src/ wget http://test.hexin.cn/software/boost_1_59_0.tar.gz -P /usr/local/src/ 2. 安装基…

[html] h5页面如何传递参数给小程序?

[html] h5页面如何传递参数给小程序&#xff1f; 1、H5页面 <script src"${base}/resources/common/js/jweixin.miniProgram.js"></script>wx.miniProgram.postMessage({ data: { shareUrl:href } });注意&#xff1a;传参必须使用data2、小程序页面接收…

k8s的认证和service account简述

k8s的认证&#xff1a; 与API server通信的客户端大致有两类&#xff1a; 1.集群客户端工具&#xff08;kubectl、kubeadm、kubelet等&#xff09; 2.集群内pod. 任何客户端访问k8s时的过程&#xff1a; 1.认证&#xff1a;任何客户端访问k8s&#xff0c;首先需要通过k8s的认…

单片机c语言应用100例第3版课后答案,单片机C语言应用100例(第3版)(含光盘1张)...

基 础 篇第1章 单片机概述及实验器材介绍21.1 单片机概述21.1.1 单片机的定义、分类与内部组成21.1.2 单片机应用系统的结构及其工作过程51.1.3 单片机的应用61.2 单片机基础知识71.2.1 数制与数制间的转换71.2.2 单片机中数的表示方法及常用数制的对应关系101.2.3 逻辑数…

biztalk在用户代码中构造多部分消息

大家知道&#xff0c;biztalk中可以在orchestration调用外部用户代码进行功能扩展&#xff0c;调用外部方法可以把消息作为参数传给外部方法&#xff0c;当然也可能需要外部方法返回一个消息到orchestration。<?xml:namespace prefix o />对于schema类型的消息&#xf…