码迷,mamicode.com
首页 > 编程语言 > 详细

Visual C++网络编程--TCP通信

时间:2014-08-27 14:39:47      阅读:246      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   os   io   文件   ar   数据   

TCP服务端

 1 #include <WinSock2.h>        //包含头文件
 2 #include <stdio.h>            
 3 #include <Windows.h>
 4 #include <iostream>
 5 #pragma  comment(lib,"WS2_32.lib")  //显示连接套接字库
 6 int main()                    //主函数开始
 7 {
 8     WSADATA data;            //定义WSADATA结构体对象
 9     WORD w=MAKEWORD(2,0);   //定义版本号码
10     char sztext[]="欢迎你\r\n"; //定义并初始化发送到客户端的字符数组
11     WSAStartup(w,&data);     //初始化套接字库
12     SOCKET s,s1;             //定义连接套接字和数据收发套接字句柄
13     s=socket(AF_INET,SOCK_STREAM,0);  //创建TCP套接字
14     sockaddr_in addr,addr2;  //定义套接字地址结构
15     int n=sizeof(addr2);     //获取套接字地址结构大小
16     addr.sin_family=AF_INET;  //初始化地址结构
17     addr.sin_port=htons(75);
18     addr.sin_addr.S_un.S_addr=INADDR_ANY;
19     bind(s,(sockaddr*)&addr,sizeof(addr));  //绑定套接字
20     listen(s,5);                            //监听套接字
21     std::cout<<"服务器已经启动\r"<<std::endl; //输出提示信息
22     while(true)
23     {
24         s1=accept(s,(sockaddr*)&addr2,&n);    //接受连接申请
25         if (s1!=NULL)
26         {
27             std::cout<<"已经连上\r"<<std::endl<<inet_ntoa(addr2.sin_addr);
28             send(s1,sztext,sizeof(sztext),0);  //向客户端发送字符数组
29         }
30         closesocket(s);
31         closesocket(s1);                        //关闭套接字句柄
32         WSACleanup();                            //释放套接字库
33         if (getchar())                            //如果有输入,则关闭程序
34         {
35             return 0;                            //正常关闭程序
36         }
37          else
38          {
39              Sleep(100);                        //应用睡眠0.1秒
40         }
41 
42     }
43 }

运行结果

bubuko.com,布布扣

服务器程序启动后,如果没有客户端向其发送连接请求,则服务器将一直等待知道有客户端程序连接。

TCP客户端

 1 #include <WinSock2.h>        //包含头文件
 2 #include <stdio.h>            
 3 #include <Windows.h>
 4 #include <iostream>
 5 #pragma  comment(lib,"WS2_32.lib")  //显示连接套接字库
 6 int main()                    //主函数开始
 7 {
 8     WSADATA data;            //定义WSADATA结构体对象
 9     WORD w=MAKEWORD(2,0);   //定义版本号码
10     char sztext[10]={0}; //定义并初始化发送到客户端的字符数组
11     WSAStartup(w,&data);     //初始化套接字库
12     SOCKET s;             //定义连接套接字和数据收发套接字句柄
13     s=socket(AF_INET,SOCK_STREAM,0);  //创建TCP套接字
14     sockaddr_in addr;  //定义套接字地址结构
15     addr.sin_family=AF_INET;  //初始化地址结构
16     addr.sin_port=htons(75);
17     addr.sin_addr.S_un.S_addr=inet_addr("192.168.7.6");
18     std::cout<<"客户端已经启动\r"<<std::endl; //输出提示信息
19     connect(s,(sockaddr*)&addr,sizeof(addr));
20     recv(s,sztext,sizeof(sztext),0);
21     std::cout<<sztext<<std::endl;
22         closesocket(s);    //关闭套接字句柄
23         WSACleanup();    //释放套接字库
24         if (getchar())    //如果有输入,则关闭程序
25         {
26             return 0;    //正常关闭程序
27         }
28         else
29         {
30             Sleep(100);    //应用睡眠0.1秒
31         }
32 
33     
34 }

 

编译运行程序,先打开服务端,再打开客户端,那么服务端会接受客户端的请求,客户端也会显示欢迎信息。

bubuko.com,布布扣

Visual C++网络编程--TCP通信

标签:style   blog   http   color   os   io   文件   ar   数据   

原文地址:http://www.cnblogs.com/jingliming/p/3939345.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!