基于TCP的Sockets编程

原创 2015年11月19日 23:46:38

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秒
		}

	//}
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Windows Sockets 网络编程——第三章 TCP/IP协议服务

第三章 TCP/IP协议服务 3.1 什么是TCP/IP TCP/IP是“传输控制协议/因特网协议”的缩略语,指的是一些主要协议中的两个协议,这些协议也被称为因特网协议簇。TCP/IP协议可为任意...

Windows Sockets网络编程(1)TCP select & thread

select在socket通信中有着举足轻重的地位,这要先从recv谈起。既然来到了本文,就默认你已经明白了send/recv阻塞式通信了,如果不太了解可以先阅读《Windows Sockets网络编...

Windows Sockets网络编程(0)TCP In Action

在谢希仁的《计算机网络》一书中,详尽的学习了网络协议七层塔。也明白了在TCP/IP协议中,可靠性是由传输层来保证的,而传输层的两大协议UDP与TCP...

Windows Sockets网络编程(2)TCP Stream拆分、拼接

TCP与UDP有一个很大的不同,UDP数据包是一包一包到达目的地的,而TCP却是流式传输的。也就是相邻两个TCP包是没有界限的。这就需要使用TCP传输的程序猿定义好数据包的格式。SOCKET编程中,r...

Windows Sockets网络编程(2)TCP select & thread

select在socket通信中有着举足轻重的地位,这要先从recv谈起。既然来到了本文,就默认你已经明白了send/recv阻塞式通信了。这种阻塞式通信,存在一个很大的问题:“假设需要建立两条以上的...

Windows Sockets网络编程(0)TCP In Action

在谢希仁的《计算机网络》一书中,详尽的学习了网络协议七层塔。也明白了在TCP/IP协议中,可靠性是由传输层来保证的,而传输层的两大协议UDP与TCP,都是在基于网络层IP协议的基础上首次提供端到端的通...

TCP Sockets编程

  • 2013-11-15 10:09
  • 4.78MB
  • 下载

网络编程之基于TCP 的Sockets编程

百度百科言:多个TCP连接或多个应用进程进程可能需要通过同一个 TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了称为套接字(Socke...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)