socket

socket编程步骤

十年热恋 提交于 2020-02-12 07:46:48
sockets(套接字)编程有三种,流式套接字(SOCK_STREAM),数据报套接字(SOCK_DGRAM),原始套接字(SOCK_RAW);基于TCP的socket编程是采用的流式套接字。在这个程序中,将两个工程添加到一个工作区。要链接一个ws2_32.lib的库文件。 服务器端编程的步骤: 1:加载套接字库,创建套接字(WSAStartup()/socket()); 2:绑定套接字到一个IP地址和一个端口上(bind()); 3:将套接字设置为监听模式等待连接请求(listen()); 4:请求到来后,接受连接请求,返回一个新的对应于此次连接的套接字(accept()); 5:用返回的套接字和客户端进行通信(send()/recv()); 6:返回,等待另一连接请求; 7:关闭套接字,关闭加载的套接字库(closesocket()/WSACleanup())。 服务端代码如下: #pragma comment (lib,"ws2_32.lib") //这句很重要,没有这句编译出错 #include < stdio.h > #include < Winsock2.h > void main() { WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 1 , 1 );

win32下的socket编程

被刻印的时光 ゝ 提交于 2020-02-12 07:21:51
// socket.cpp : 定义控制台应用程序的入口点。 // //服务器端 //SOCKET连接过程   //根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。    //服务器监听:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。   //客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。 //为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。    //连接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。 //而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。 //如何开发一个Server-Client模型的程序 //开发原理:    //服务器,使用ServerSocket监听指定的端口,端口可以随意指定(由于1024以下的端口通常属于保留端口,在一些操作系统中不可以随意使用,所以建议使用大于1024的端口),等待客户连接请求,客户连接后,会话产生;在完成会话后,关闭连接。   // 客户端

c#学习之Socket网络编程

a 夏天 提交于 2020-02-12 07:21:35
我是新手以前没写过博客 希望大家勿喷, 在编写Socket的时候需要导入 System.Net.Socket 命名空间。利用该类我们可以直接编写Socket的客户端和服务的的程序了, 这里我们只讲tpc协议下的Socket编程。 TCP Socket连接的过程可以简单的分为: ①.服务端监听 ②.客户端请求 ③.建立连接, 在服务端: (1)声明一个套接字(称为监听套接字)Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); (2)声明一个端点(EndPoint)上面提到过Socket需要跟它绑定才能通信。IPEndPoint endPoint = new IPEndPoint(IPAddress.Loopback, 8080); (3)设置监听队列serverSocket.Listen(100); (4)通过Accept()方法来获取一个通信套接字(当有客户端连接时),这个方法会阻塞线程,避免界面卡死的现象,启动一个线程,把这个Accept()放在线程函数里面。 在客户端: (1)声明一个套接字,通过connect()向服务器发起连接。 (2)通过Receive方法获取服务器发来的消息(这里同样启用一个线程

WinSock UDP通讯实例

倾然丶 夕夏残阳落幕 提交于 2020-02-12 07:18:00
下载 #include < WinSock2.h > #include < stdio.h > #define PORT 8888 int main() // server { WSADATA wsaData; int Ret = WSAStartup(MAKEWORD( 2 , 2 ), & wsaData); printf( " Server !\n " ); if (Ret != 0 ) { printf( " 无法初始化winsock.\n " ); WSACleanup(); } else { // printf("初始化winsock成功\n"); } if ( LOBYTE( wsaData.wVersion ) != 2 || HIBYTE( wsaData.wVersion ) != 2 ) { WSACleanup( ); return 1 ; } SOCKET socket = ::socket(AF_INET,SOCK_DGRAM,IPPROTO_IP); sockaddr_in addr; addr.sin_addr.S_un.S_addr = INADDR_ANY; addr.sin_family = AF_INET; addr.sin_port = ntohs(PORT); if (socket == INVALID_SOCKET) { printf(

php中使用Curl、socket、file_get_contents三种方法POST提交数据

半城伤御伤魂 提交于 2020-02-12 04:47:20
抓取远程内容,之前一直都在用file_get_content函数,其实早就知道有curl这么一个好东西的存在,但是看了一眼后感觉使用颇有些复杂,没有file_get_content那么简单,再就是需求也不大,所以没有学习使用curl。 直到最近,要做一个网页小偷程序的时候才发现file_get_content已经完全不能满足需求了。我觉得,在读取远程内容的时候,file_get_content除了使用比curl便捷以外,其他都没有curl好。 php中curl和file_get_content的一些比较 主要区别: 学习才发现,curl支持很多协议,有FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE以及LDAP,也就是说,它能做到很多file_get_content做不到的事情。curl在php可以实现远程获取和采集内容;实现PHP网页版的FTP上传下载;实现模拟登陆;实现接口对接(API),数据传输;实现模拟Cookie;下载文件断点续传等等,功能十分强大。 了解curl一些基本的使用后,才发现其实并不难,只不过记住里面一些设置参数,难弄一点,但是我们记住几个常用的就可以了。 开启curl: 因为PHP默认是不支持curl功能的,因此如果要用curl的话,首先需要在php.ini中开启该功能,即去掉 ;extension=

PHP模拟发送POST请求之三、用Telnet和fsockopen()模拟发送POST信息

本秂侑毒 提交于 2020-02-12 04:39:35
了解完了HTTP头信息和URL信息的具体内容,我们开始尝试自己动手写一段头信息发送到服务器。Windows内置命令Telnet可以帮助我们发送简单的HTTP请求。 并且TELNET是一个特别灵活的工具,我们还可以用它进行FTP/SMTP/POP3/TCP等方式的简单请求。 通过开始菜单--运行--CMD命令进入DOS状态, 我们输入“Telnet 主机地址 端口(Telnet 192.168.1.99 80)” 来进入telnet命令状态(完全黑窗口,此时输出字符会出问题),我们按”ctrl”+”]”,切回普通CMD窗口,再按”ENTER”回车键进入编辑命令状态。 如果系统提示找不到TELNET命令,只需按如下方式可解锁TELNET命令。 进入TELNET 命令输入模式后我们就可以直接编辑头文件来进行发送了 只需要注意:当编辑完请求头文件后要按两次回车键来发送。 这是一次标准的HTTP请求与响应,是不是跟上节的HTTP文件关联了。 当然我们不能只用这么不方便的工具,下面要介绍的是PHP里的 fsockopen() 方法。 先来看fsockopen()方法的原型: resource fsockopen ( string $hostname [, int $port = -1 [, int &$errno [, string &$errstr [, float $timeout =

SOCKET网络编程一:回射客户服务器

时光毁灭记忆、已成空白 提交于 2020-02-11 18:39:09
socket可以看成是用户进程与内核网络协议栈的编程接口。 socket不仅可以用于本机的进程间通信,还可以用于网络上不同主机的进程间通信 一、基础TCP客户端服务器模型(C/S模型) 服务端: Socket创建套接字 ==》 安装一部话机 Bind 绑定 ==》绑定一个电话号码 Listen 监听 Accept 等待对方连接 ==》等待对方电话拨打过来,如果没有对方电话拨打过来就一直阻塞 客户端连接到达,开始处理请求read() Write()应答 客户端: Socket创建套接字 ==》 安装一部话机 Connect 连接 ==》 拨打对方电话号码,拨通后就建立连接,建立连接后双方就开始通信(三次握手)。 调用write()发起请求 接收应答read(); 通信过程中,任何一方都可以调用close终止通信。客户端调用close终止,服务端read后进行close 二、回射客户服务器: 实现功能:客户端从标准输入获取一行数据,通过网络发送给服务器端;服务器端接收到后不做任何处理,将数据发送给客户端,客户端再显示到标准输出 三、由基础CS模型可知,我们需要用到的函数有socket、bind、listen、accept、connect。接下来对每个函数进行说明: 第二个参数规定了最大并发连接数=已完成连接队列+未完成连接队列;Listen后,套接字变为被动套接字,用于接收连接

我画你猜(二)

北战南征 提交于 2020-02-11 04:22:03
上一篇已经写好了两个类实现了画画功能,这次加上websocket实现广播 用到node组件ws npm install ws --save 建立个连接池实现广播 const WebSocket = require('ws'); const wss = new WebSocket.Server({ port: 4000 }); // 连接池 let clients = []; let myWs = () =>{ wss.on('connection', function connection(ws) { clients.push(ws); ws.on('message', function incoming(message) { // 广播消息 clients.forEach(function(ws1){ if(ws1 !== ws) { ws1.send(message); } }); }); ws.on('close', function(message) { // 连接关闭时,将其移出连接池 clients = clients.filter(function(ws1){ return ws1 !== ws }) }); }); } module.exports = myWs;    前端增加socket类 //清空画布 Draw.prototype.clearAll =

Netty 学习 之(1)Netty是什么

和自甴很熟 提交于 2020-02-10 20:25:26
关注,私信赠送netty源码分析学习视频 在开始了解Netty是什么之前,我们先来回顾一下,如果我们需要实现一个客户端与服务端通信的程序,使用传统的IO编程,应该如何来实现? IO编程 我们简化下场景:客户端每隔两秒发送一个带有时间戳的"hello world"给服务端,服务端收到之后打印。 为了方便演示,下面例子中,服务端和客户端各一个类,把这两个类拷贝到你的IDE中,先后运行 IOServer.java 和 IOClient.java 可看到效果。 下面是传统的IO编程中服务端实现 public class IOServer { public static void main(String[] args) throws Exception { ServerSocket serverSocket = new ServerSocket(8000); // (1) 接收新连接线程 new Thread(() -> { while (true) { try { // (1) 阻塞方法获取新的连接 Socket socket = serverSocket.accept(); // (2) 每一个新的连接都创建一个线程,负责读取数据 new Thread(() -> { try { byte[] data = new byte[1024]; InputStream inputStream