【Socket规划】套接字Windows台C语言
【编译环境】:Visual Studio 2013
这是服务端实现流程。
#include<stdio.h>
#include<stdlib.h>
#include<winsock2.h> #pragma comment(lib, "ws2_32.lib") const int BACK_LOG = 5; int main(int argc, char * argv[])
{
//初始化套接字
WSADATA wsaData;
int ret = WSAStartup(MAKEWORD(2, 4), &wsaData);
if (0 != ret){
fputs("WSAStartup error\n", stderr);
return 1;
} //创建套接字
SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (INVALID_SOCKET == sock) {
fputs("socket() error\n", stderr);
WSACleanup();
return 1;
} //绑定套接字
SOCKADDR_IN sockAddr;
memset(&sockAddr,0,sizeof(SOCKADDR_IN));
sockAddr.sin_family = AF_INET;//协议簇,一般用AF_INET表示TCP/IP协议
sockAddr.sin_addr.S_un.S_addr = htonl(ADDR_ANY);//表示IP地址
sockAddr.sin_port = htons(7);//表示端口 ret = bind(sock, (SOCKADDR*)&sockAddr, sizeof(sockAddr));
if (SOCKET_ERROR == ret) {
fputs("bind() error\n", stderr);
closesocket(sock);
WSACleanup();
return 1;
} //侦听套接字
ret = listen(sock, BACK_LOG);
if (SOCKET_ERROR == ret) {
fputs("listen() error\n", stderr);
closesocket(sock);
WSACleanup();
return 1;
} //接收套接字
SOCKADDR_IN clientAddr;
int szClientAddr = sizeof(clientAddr); SOCKET clientSock = accept(sock, (SOCKADDR*)&clientAddr, &szClientAddr); if (INVALID_SOCKET == clientSock){
fputs("accept() error\n", stderr);
closesocket(sock);
WSACleanup();
return 1;
} //收发数据
TCHAR buff[256];
memset(&buff,0,sizeof(buff)); recv(sock,buff,sizeof(buff),0);//recv()返回读入的字节数 TCHAR buff2[] = "QUIT\n";
send(sock, buff2, sizeof(buff2), 0);//成功则返回实际传送出去的字符数 //回收资源
closesocket(sock);
closesocket(clientSock);
WSACleanup(); return 0; }
版权声明:本文博主原创文章,博客,未经同意不得转载。
【Socket规划】套接字Windows台C语言的更多相关文章
- iOS - Socket 网络套接字
1.Socket 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个 Socket.Socket 又称 "套接字",应用程序通常通过 "套接字& ...
- Win2 Socket(套接字)相关 API
Socket(套接字) 作者信息 肖进 单位:南京中萃食品有限公司 资讯部 邮箱:xiaoj@njb.swirebev.com 电话:025-58642091 与socket有关的一些函数介绍 1.读 ...
- python 全栈开发,Day33(tcp协议和udp协议,互联网协议与osi模型,socket概念,套接字(socket)初使用)
先来回顾一下昨天的内容 网络编程开发架构 B/S C/S架构网卡 mac地址网段 ip地址 : 表示了一台电脑在网络中的位置 子网掩码 : ip和子网掩码按位与得到网段 网关ip : 内置在路由器中的 ...
- socket概念 套接字
理解socket soxket因为TCP是面向流的,你发的信息如果很多很快,TCP这样就会形成黏包 Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socke ...
- Socket称"套接字"
Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求. 二.利用Socket建立网络连接的步骤 建立Socket连接至少需要一对 ...
- sanic官方文档解析之Custom Protocols(自定义协议)和Socket(网络套接字)
1,Custom Protocol:自定义协议 温馨提示:自定义协议是一个高级用法,大多数的读者不需要用到此功能 通过特殊的自定义协议,你可以改变sanic的协议,自定义协议需要继承子类asyncio ...
- 网络编程(socket,套接字)
服务端地址不变 ip + mac 标识唯一一台机器 ip +端口 标识唯一客户端应用程序 套接字: 网络编程 网络编程 一.python提供了两个级别访问的网络服务 低级别的网络服务支持基本的 S ...
- Linux Socket 原始套接字编程
对于linux网络编程来说,可以简单的分为标准套接字编程和原始套接字编程,标准套接字主要就是应用层数据的传输,原始套接字则是可以获得不止是应用层的其他层不同协议的数据.与标准套接字相区别的主要是要开发 ...
- Python之socket(套接字)
Socket 一.概述 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. ...
随机推荐
- 使用JSP实现商场购物车模块
这些日子,学习JSP,只要找到一个小模块来试试你的手: 这里是实现车模块结果页面截图: 图1. 产品显示页面 通过此页面进行产品选择.增加到购物车 图2 .购物车页面 图3 . 商品数量设置 好了,先 ...
- VMware vSphere 服务器虚拟化之十六 桌面虚拟化之VMware Horizon View
VMware vSphere服务器虚拟化之十六 桌面虚拟化之VMware Horizon View VMware Horizon View (原VMware View的升级版现在版本5.2)是 ...
- Java中动态代理技术生成的类与原始类的区别
用动态代理的时候,对它新生成的类长什么样子感到好奇.有幸通过一些资料消除了心里的疑惑. 平时工作使用的Spring框架里面有一个AOP(面向切面)的机制,只知道它是把类重新生成了一遍,在切面上加上了后 ...
- network: Android 网络推断(wifi、3G与其它)
public class NetworkProber { /** * 网络是否可用 * * @param activity * @return */ public static bool ...
- JQuery操作select checkbox radio总结
JQuery是一个非常强大的工具,所以我必须找到它最方便的方法,嘻嘻 Select CRUD: Select搜: 1.val值: $("#selectid").val(); ...
- HDU 1695 GCD 欧拉函数+容斥原理+质因数分解
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1695 题意:在[a,b]中的x,在[c,d]中的y,求x与y的最大公约数为k的组合有多少.(a=1, a ...
- FTP文件操作之删除文件
上面我已经介绍了利用ftp进行上传跟下载,接下来跟大家分享的是删除ftp服务器上的文件的部分.有了上传,有了下载,那么删除自然也是不能少的. 删除相对于上传跟下载更简单一些,它不需要进行文件的传输,只 ...
- Xaml于string(弦)定义常量和处理空间
xml version="1.0" encoding="UTF-8"? > (1)基本使用方法 xaml中能够实例化各种对象,比方在ResourceDic ...
- CSS 之 光进入光
一个.概念 css,层叠样式表(英语:Cascading Style Sheets.简写CSS).又称串样式列表.层次结构式样式表文件,一 种用来为结构化文档(如HTML文档或XML应用)加入样式(字 ...
- Android:ViewPager扩展的具体解释——导航ViewPagerIndicator(有图片缓存,异步加载图片)
我们已经用viewpager该. github那里viewpager扩展,导航风格更丰富.这个开源项目ViewPagerIndicator.非常好用,但样品是比较简单,实际用起来是非常不延长.例如,在 ...