少说话,多实践,坚持再坚持

1、孰能生巧,看懂不一定会写,少看一些编程鸡汤,多一些实践! 2、编程就是逆水行舟,不进则退,每天坚持足够的学习...

基于TCP的Sockets编程

Win32 下使用SOCKET  API函数进行网络开发的基本流程与方法

1、初始化和释放套接字库

2、创建套接字句柄

3、绑定地址信息

4、连接

5、数据收发

6、关闭套接字


下面介绍基于TCP的Sockets编程

TCP服务器

#include<winsock2.h>
#include<stdio.h>
#include<Windows.h>
#pragma comment(lib,"WS2_32.lib")
int main()
{
	WSADATA data;	//定义WADATA结构体对象
	WORD w=MAKEWORD(2,0);	//定义版本号
	char sztext[]="欢迎你\r\n";	//定义并初始化发送到客户端的字符数
	::WSAStartup(w,&data);//初始化套接字库
	SOCKET s,s1; //定义连接套接字和数据收发套接字句柄
	s=::socket(AF_INET,SOCK_STREAM,0);//创建TCP套接字
	sockaddr_in addr,addr2; //定义套接字地址结构
	int n=sizeof(addr2);//获取套接字地址结构大小
	addr.sin_family=AF_INET;	//初始化地址结构
	addr.sin_port=htons(75);
	addr.sin_addr.S_un.S_addr=INADDR_ANY;
	::bind(s,(sockaddr*)&addr,sizeof(addr));//绑定套接字
	::listen(s,5);	//监听套接字
	printf("服务器已经启动\r\n");	//输出提示信息
	while(true)
	{
		s1=::accept(s,(sockaddr*)&addr2,&n);	//接收连接请求
		if(s1!=NULL)
		{
			printf("%s已经连接上\r\n",inet_ntoa(addr2.sin_addr));
			::send(s1,sztext,sizeof(sztext),0);//向客户端发送字符数组
		}
		::closesocket(s);//关闭套接字句柄
		::closesocket(s1);
		::WSACleanup();	//释放套接字库
		if(getchar())
		{
			return 0;
		}
		else
		{
			::Sleep(100);	//应用睡眠0.1秒
		}

	}
}

TCP客户端

#include<winsock2.h>
#include<stdio.h>
#include<Windows.h>
#pragma comment(lib,"WS2_32.lib")
int main()
{
	WSADATA data;	//定义WADATA结构体对象
	WORD w=MAKEWORD(2,0);	//定义版本号
	//char sztext[]="欢迎你\r\n";	//定义并初始化发送到客户端的字符数
	::WSAStartup(w,&data);//初始化套接字库
	//SOCKET s,s1; //定义连接套接字和数据收发套接字句柄
	SOCKET s;
	char sztext[10]={0};
	s=::socket(AF_INET,SOCK_STREAM,0);//创建TCP套接字
	//sockaddr_in addr,addr2; //定义套接字地址结构
	sockaddr_in addr;
	//int n=sizeof(addr2);//获取套接字地址结构大小
	addr.sin_family=AF_INET;	//初始化地址结构
	addr.sin_port=htons(75);
	//addr.sin_addr.S_un.S_addr=INADDR_ANY;
	addr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
	printf("客户端已经启动\r\n");	//输出提示信息
	//::bind(s,(sockaddr*)&addr,sizeof(addr));//绑定套接字
	//::listen(s,5);	//监听套接字
	::connect(s,(sockaddr*)&addr,sizeof(addr));
	::recv(s,sztext,sizeof(sztext),0);

	//printf("服务器已经启动\r\n");	//输出提示信息
	//while(true)
	printf("%s\r\n",sztext);
		::closesocket(s);//关闭套接字句柄
		//::closesocket(s1);
		::WSACleanup();	//释放套接字库
		if(getchar())
		{
			return 0;
		}
		else
		{
			::Sleep(100);	//应用睡眠0.1秒
		}

	//}
}


阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/q357010621/article/details/49936405
文章标签: socket tcp C++
个人分类: C++
想对作者说点什么? 我来说一句

TCP_IP Sockets编程 C语言实现 第2版

2013年11月14日 18.47MB 下载

没有更多推荐了,返回首页

不良信息举报

基于TCP的Sockets编程

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭