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

	//}
}


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

使用 TCP / IP 套接字(Sockets)

使用TCP / IP 套接字(Sockets)   TCP/IP 套接字提供了跨网络的低层控制。TCP/IP套接字是两台计算机之间的逻辑连接,通过它,计算机能够在任何时间发送或接收数据;这个连接一直保...
  • hadstj
  • hadstj
  • 2014年05月20日 16:16
  • 1675

基于TCP的Sockets编程

TCP服务器: // TCP服务器.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include #pragma comment...
  • xiaozz_m608c
  • xiaozz_m608c
  • 2014年04月03日 20:32
  • 324

高性能网络编程总结及《TCP/IP Sockets编程(C语言实现) (第2版)》 代码下载(链接以及文件打包)

http://blog.csdn.net/column/details/high-perf-network.html http://blog.csdn.net/russell_tao/article/...
  • benpaobagzb
  • benpaobagzb
  • 2016年03月01日 17:04
  • 3749

单机tcp并发连接

tcp单机连接数目限制
  • ysu108
  • ysu108
  • 2015年07月09日 14:51
  • 1390

基于UDP的Sockets编程

当程序创建套接字句柄成功后
  • xiaozz_m608c
  • xiaozz_m608c
  • 2014年04月03日 21:39
  • 317

Windows下的Socket网络编程小实战

代码为Windows平台下,server.cpp 是服务器端代码,client.cpp 是客户端代码,要实现的功能是:客户端从服务器读取一个字符串并打印出来。 服务器端代码 server.cpp: ...
  • sinat_20265495
  • sinat_20265495
  • 2016年06月26日 11:05
  • 3164

深入研究socket编程(4)——并发服务器(TCP)

在迭代服务器中,服务器只能处理一个客户端的请求,如何同时服务多个客户端呢?在未讲到select/poll/epoll等高级IO之前,比较老土的办法是使用fork来实现。      网络服务器通常用f...
  • chenxun2009
  • chenxun2009
  • 2016年01月09日 16:34
  • 1719

TCP/IP——网络编程模型

一 socket结构体
  • xiaolangyangyang
  • xiaolangyangyang
  • 2016年05月30日 11:20
  • 773

Sockets编程——URL

1、URL(Uniform Resource Locator)统一资源定位符,表示Internet上某一资源的地址 如我们的博客地址  2、URL由俩部分组成:协议名称和资源名称,中间用冒号隔开。...
  • wenwen360360
  • wenwen360360
  • 2017年02月13日 15:57
  • 72

linux网络编程之TCP接口详解

对于linux网络编程基于TCP的API做了详细的描述
  • topgunliu
  • topgunliu
  • 2016年06月26日 17:52
  • 932
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:基于TCP的Sockets编程
举报原因:
原因补充:

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