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

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 }

运行结果

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

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 }

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

时间: 2024-10-11 00:52:35

Visual C++网络编程--TCP通信的相关文章

JAVA网络编程TCP通信

Socket简介: Socket称为"套接字",描述IP地址和端口.在Internet上的主机一般运行多个服务软件,同时提供几种服务,每种服务都打开一个Socket,并绑定在一个端口上,不同的端口对应于不同的服务.Socket和ServerSocket类位于java.net包中.ServerSocket用于服务端,Socket是建立网络连接时使用的.连接成功时,应用程序两端都会产生一个Socket实例,通过操作这个实例完成所需会话. Socket常用方法: -int getLocalP

[javaSE] 网络编程TCP通信

EffectiveJava%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0%E2%80%94%E2%80%94%E5%A4%8D%E5%90%88%E4%BC%98%E5%85%88%E4%BA%8E%E7%BB%A7%E6%89%BF http://auto.315che.com/sbd203/qa23376156.htm?s1 ??????aWieJ9w2??μ??????? ?????EuQNEVmi??????????t http://auto.315che.co

网络编程:Http通信与Socket通信

http://note.youdao.com/share/?id=f14d304548003f65e34255d3ddf9df31&type=note 网络编程:Http通信与Socket通信(移动互联核心) 知识点概述: 1.Socket通信:面向连接(TCP)和无连接的(UDP) 2.HttpURLConnection 接口:Get和Post方式 3.HttpClient接口:Get和Post方式 知识点详述: 1 Socket通信 Socket称为”套接字“,用于描述IP地址和端口,它是支

python网络编程——TCP

<pre name="code" class="python"> 一.网络通信模式 对于网络通信,现在遵循的是TCP/IP协议组. 而现在设计的通信模式中,主要使用的是客户端/服务器编程,所谓的客户端就是我们用户所用的软件,而服务端则是程序开发人员根据客户端的需要设计的服务模式,为了是满足客户端的要求,实现和客户端进行正常通信. 二.套接字:通信的端点 对于tcp/Ip协议来说,它是一个多层协议族,分别是物理层,数据链路层,网络层,传输层,应用层.对于网

网络编程TCP总结及实践-C语言

网络变成首先要注意IP和端口的转换,现在电脑基本上是主机字节序,存储按照小端方式,而在网络中传输统一使用大端方式,所以网络变成首先要注意字节序的转换. 一个常用的ip转换程序的实现: #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> #define CHIP(ip) (ip&0xff)<<24 |(ip&(0xff<&

Socket网络编程(TCP/IP/端口/类)和实例

Socket网络编程(TCP/IP/端口/类)和实例 原文:C# Socket网络编程精华篇 转自:微冷的雨 我们在讲解Socket编程前,先看几个和Socket编程紧密相关的概念: TCP/IP层次模型 当然这里我们只讨论重要的四层 01,应用层(Application):应用层是个很广泛的概念,有一些基本相同的系统级TCP/IP应用以及应用协议,也有许多的企业应用和互联网应用.http协议在应用层运行. 02,传输层(Tanspot):传输层包括UDP和TCP,UDP几乎不对报文进行检查,而

JAVA网络编程-----tcp

java采用TCP传输时利用Socket和ServerSocket Socket和ServerSocket 建立客户端和服务端 建立连接后,通过Socket中的IO流进行数据的传输. 关闭Socket 同样,客户端与服务端是两个独立的应用程序. 演示tcp传输 1.   tcp分客户端和服务端 2.   客户端对应的对象是Socket,服务端对应的对象是ServerSocket. 客户端: 通过查阅socket对象,发现在该对象建立时,就可以连接指定主机, 因为tcp是面向连接的,所以在建立so

GO语言练习:网络编程 TCP 示例

1.代码 2.编译及运行 1.网络编程 TCP 示例 simplehttp.go 代码 1 package main 2 3 import ( 4 "net" 5 "os" 6 "io" 7 "bytes" 8 "fmt" 9 ) 10 11 func main() { 12 if len(os.Args) != 2 { 13 fmt.Fprintf(os.Stderr, "Usage : %s

unix环境编程 tcp通信

TCP通信的过程为: 一. 服务器端: 1.socket(int domain,int type,int protocol):建立套接字: 2 .bind(int sockid,struct sockaddr *addrp,socklen_t addrlen):绑定端口和地址信息: 3.listen(int sockid,int qsize):监听套接字; 4.fd=accept(int sockid,struct sockaddr *callerid,socklen_t *addrlenp):