【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地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. ...
随机推荐
- iSwifting如何发送照片社区
登录iSwifting社区 1,首先点击"帖子": 2,点击"照片": 3.点击"选择文件上传" 4,上传后的照片: 5,点击上传的照片: ...
- Akka FSM 源代码分析
Akka FSM 源代码分析 萧猛 <simonxiao@qq.com> 啰嗦几句 有限状态机本身不是啥新奇东西,在GoF的设计模式一书中就有状态模式, 也给出了实现的建议.各种语言对状态 ...
- android 中国通信乱码问题
1.要解决中文乱码问题.首先得了解什么是字符编码 计算机要处理各种字符,就须要将字符和二进制内码相应起来,这样的相应关系就是字符编码. 要制定字符编码首先要确定字符集,并将 字符集内的字符排序.然后和 ...
- Spring3.2 HelloWorld
直接上图吧: jar包: 项目文件夹一览: 这里的HelloWeb-servlet,xml 是在WEB-INF 下 HelloController: package com.cqu.tutorial; ...
- php 两个文件之间的相对路径的计算方法
php 两个文件之间的相对路径的计算方法 比如: 文件A 的路径是 /home/web/lib/img/cache.php 文件B的路径是 /home/web/api/img/show.php 那么. ...
- 搭建SSH
搭建SSH详细步骤及相关说明 因为手里已有相关jar,为方便我搭建的是:Struts2.0+Hibernate3.3+Spring3.0,数据库:MySQL 如果想搭建最新的,在官网上下载最新ja ...
- chrome(转)
阅读目录 Chrome的隐身模式 Chrome下各种组合键 Chrome的about指令 chrome://accessibility 查看浏览器当前访问的标签 chrome://appcac ...
- ASP.NET自定义控件组件开发 第一章 待续
原文:ASP.NET自定义控件组件开发 第一章 待续 第一章:从一个简单的控件谈起 系列文章链接: ASP.NET自定义控件组件开发 第一章 待续 ASP.NET自定义控件组件开发 第一章 第二篇 接 ...
- chrome插件演示,经js转让chrome api清除浏览器缓存
一个简单的chrome插件演示,主页脚本.内容脚本.背景和脚本之间的通信api呼叫.在此之上可以延长通话等chrome api. 下载链接:http://download.csdn.net/detai ...
- 解决ASP.NET Web API Json对象循环参考错误
前言 一般我们在开法 ASP.NET Web API 时,如果是使用 Entity Framework 技术来操作数据库的话,当两个 Entity 之间包含导览属性(Navigation Proper ...