winSocket数据传输
服务器端:
#include <WINSOCK2.H>
#include <stdio.h>
#pragma comment(lib,"ws2_32.lib")
int main(int argc,char **argv)
{
//创建套接字
WORD myVersionRequest;
WSADATA wsaData;
myVersionRequest=MAKEWORD(,);
int err;
err=WSAStartup(myVersionRequest,&wsaData);
if (!err)
{
printf("已打开套接字,等待连接!\n");
}
else
{
printf("ERROR:嵌套字未打开!");
return ;
}
//进一步绑定套接字
SOCKET serSocket=socket(AF_INET,SOCK_STREAM,);//创建了可识别套接字 //需要绑定的参数
SOCKADDR_IN addr;
addr.sin_family=AF_INET;
addr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);//ip地址
addr.sin_port=htons();//绑定端口 bind(serSocket,(SOCKADDR*)&addr,sizeof(SOCKADDR));//绑定完成
listen(serSocket,);//其中第二个参数代表能够接收的最多的连接数 //////////////////////////////////////////////////////////////////////////
//开始进行监听
//////////////////////////////////////////////////////////////////////////
SOCKADDR_IN clientsocket;
int len=sizeof(SOCKADDR);
while ()
{
SOCKET serConn=accept(serSocket,(SOCKADDR*)&clientsocket,&len);//如果这里不是accept而是conection的话。。就会不断的监听
char sendBuf[]; sprintf(sendBuf,"hello, %s !",inet_ntoa(clientsocket.sin_addr));//找对对应的IP并且将这行字打印到那里
printf("Send:%s\n",sendBuf);
send(serConn,sendBuf,strlen(sendBuf)+,); char receiveBuf[];//接收
recv(serConn,receiveBuf,sizeof(receiveBuf),);
printf("recv:%s\n",receiveBuf); closesocket(serConn);//关闭
WSACleanup();//释放资源的操作
return ;
}
return ;
}
客户机端:
#include <WINSOCK2.H>
#include <stdio.h>
#pragma comment(lib,"ws2_32.lib")
int main(int argc,char **argv)
{
int err;
WORD versionRequired;
WSADATA wsaData;
versionRequired=MAKEWORD(,);
err=WSAStartup(versionRequired,&wsaData);//协议库的版本信息
if (!err) {
printf("客户端嵌套字已经打开!\n");
} else {
printf("ERROR:客户端的嵌套字打开失败!\n");
return ;//结束
}
SOCKET clientSocket=socket(AF_INET,SOCK_STREAM,); SOCKADDR_IN clientsock_in;
clientsock_in.sin_addr.S_un.S_addr=inet_addr("192.168.1.3");
clientsock_in.sin_family=AF_INET;
clientsock_in.sin_port=htons(); //bind(clientSocket,(SOCKADDR*)&clientsock_in,strlen(SOCKADDR));//注意第三个参数
//listen(clientSocket,5);
connect(clientSocket,(SOCKADDR*)&clientsock_in,sizeof(SOCKADDR));//开始连接
char receiveBuf[];
if() { printf("Send:%s\n","hello,this is client");
send(clientSocket,"hello,this is client",strlen("hello,this is client")+,); recv(clientSocket,receiveBuf,,);
printf("Recv:%s\n",receiveBuf); closesocket(clientSocket);
WSACleanup();
}
return ;
}
simple "hello world" program:
Client:
#include<stdio.h>
#include<winsock2.h>
#pragma comment (lib,"ws2_32")
int main(int argc,char *argv[])
{ WSADATA wsaData;
WSAStartup(MAKEWORD(,),&wsaData); SOCKET s=socket(PF_INET,SOCK_STREAM,IPPROTO_TCP); sockaddr_in sockaddr;
sockaddr.sin_family=PF_INET;
sockaddr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
sockaddr.sin_port=htons(); connect(s,(SOCKADDR*)&sockaddr,sizeof(SOCKADDR)); char Buffer[MAXBYTE]={};
recv(s,Buffer,MAXBYTE,NULL);
printf("Buffer = %s \r\n",Buffer);
closesocket(s);
getchar();
WSACleanup();
return ; }
Server:
#include<winsock2.h>
#pragma comment (lib,"ws2_32")
int main(int argc,char *argv[])
{
WSADATA wsaData;
WSAStartup(MAKEWORD(,),&wsaData); SOCKET s=socket(PF_INET,SOCK_STREAM,IPPROTO_TCP); sockaddr_in sockaddr;
sockaddr.sin_family=PF_INET;
sockaddr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
sockaddr.sin_port=htons(); bind(s,(SOCKADDR*)&sockaddr,sizeof(SOCKADDR));
listen(s,);
SOCKADDR clientAddr;
int nSize=sizeof(SOCKADDR);
SOCKET clientSock;
clientSock=accept(s,(SOCKADDR*)&clientAddr,&nSize); send(clientSock,"hello client \r\n",strlen("hello client \r\n")+sizeof(char),NULL);
closesocket(clientSock);
closesocket(s); WSACleanup();
return ;
}
winSocket数据传输的更多相关文章
- 用Delphi实现WinSocket高级应用
用Delphi实现WinSocket高级应用 默认分类 2009-12-19 16:48 阅读6 评论0 字号: 大大 中中 小小 Socket通信在Windows 中是排队的形式 ...
- ABP(现代ASP.NET样板开发框架)系列之16、ABP应用层——数据传输对象(DTOs)
点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之16.ABP应用层——数据传输对象(DTOs) ABP是“ASP.NET Boilerplate Project ...
- 前端学HTTP之数据传输
× 目录 [1]客户机处理 [2]集线器处理 [3]路由器1处理[4]路由器2处理[5]交换机处理[6]服务器处理[7]反向传输 前面的话 上一篇中,介绍了网络基础.本文将详细介绍客户机在浏览网页ab ...
- Android GZIP压缩IO流,优化APP数据传输(一)
我是小搬运工,今天讲解流的压缩传输 在我们安卓开发中,通常伴随着大量的数据传输,在此,楼主给出一个简单的压缩流的数据进行操作. public void GZIPCpf(String path) { / ...
- ABP理论学习之数据传输对象(DTO)
返回总目录 本篇目录 为何需要DTO 领域层抽象 数据隐藏 序列化和懒加载问题 DTO惯例和验证 DTO和实体的自动映射 使用特性和扩展方法进行映射 帮助接口 DTO用于应用层和 展现层间的数据传输. ...
- 应用程序框架实战三十四:数据传输对象(DTO)介绍及各类型实体比较
本文将介绍DDD分层架构中广泛使用的数据传输对象Dto,并且与领域实体Entity,查询实体QueryObject,视图实体ViewModel等几种实体进行比较. 领域实体为何不能一统江湖? 当你阅读 ...
- Linux下不同服务器间数据传输--转载
因为工作原因,需要经常在不同的服务器见进行文件传输,特别是大文件的传输,因此对linux下不同服务器间数据传输命令和工具进行了研究和总结.主要是rcp,scp,rsync,ftp,sftp,lftp, ...
- Linux下不同服务器间数据传输
因为工作原因,需要经常在不同的服务器见进行文件传输,特别是大文件的传输,因此对linux下不同服务器间数据传输命令和工具进行了研究和总结.主要是rcp,scp,rsync,ftp,sftp,lftp, ...
- Service Broker应用(2):不同server间的数据传输,包含集群
不同Server之间的数据传输,包含DB使用AlwaysOn 配置脚本: SQL Server Service Broker 跨集群通信 具体的TSQL 脚本语句如下.注意的是TSQL语句是在发送方还 ...
随机推荐
- ASP.NET杂谈-一切都从web.config说起(2)(ConfigSections详解-下)
还是接着上一篇说起,在上两篇中主要和大家探讨了ConfigSection的几种常用形式,并举例几个例子说明了一下.其实它们主要都是继承System.Configuration.Configuratio ...
- angular指令大全
这篇文章的案例都是来自官方,引用的cdn来自bootcss, 因为angular的官方网站被屏了, 所以要翻, 不过我把整个文档下回来了,方便大家下载可以点击: 打开下载英文版 angular的指令 ...
- bzoj1012
Description 现在请求你维护一个数列,要求提供以下两种操作:1. 查询操作.语法:Q L 功能:查询当前数列中末尾L 个数中的最大的数,并输出这个数的值.限制:L不超过当前数列的长度.2. ...
- html-div中内容自动换行
<div style='width: 100px;display:block;word-break: break-all;word-wrap: break-word;'> 内容超出div宽 ...
- MySQL的Sleep进程
php的垃圾回收机制,其实只针对于php本身. 对于mysql,php没权利去自动去释放它的东西. 如果你在页面执行完毕前不调用mysql_close(),那么mysql那边是不会关闭这个连接的. 如 ...
- 将代码托管到OSChina服务器上
前言:前面的文章已经介绍过了如何将代码托管到github的服务器.并且笔者也详细的介绍了使用HTTPS和SSH两种不同的身份验证方式.但是仅仅介绍github的使用是不够的,原因笔者已经在前面的文章中 ...
- ubuntu优化使用
1.开机程序设置 1.系统自带 Dash菜单中搜索gnome-session 2.安装扩展包 kamil@kamil-ThinkPad-X260:~$ sudo apt-get install rcc ...
- [bzoj3670][2014湖北省队互测week2]似乎在梦中见过的样子
Description 已知一个字符串S,求它有多少个形如A+B+A的子串(len(A)>=k,len(B)>=1 ). Input 第一行一个字符串,第二行一个数 k. Output 仅 ...
- 【BZOJ-1014】火星人prefix Splay + 二分 + Hash
1014: [JSOI2008]火星人prefix Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 5852 Solved: 1871[Submit] ...
- dotnet文件操作
/// <summary> /// 创建文件夹 /// </summary> /// <param name="sender"></par ...