网络编程__第一个服务端和客户端
来源:互联网 发布:淘宝如何获取免费流量 编辑:程序博客网 时间:2024/05/07 07:01
最近开始学习自习网络编程了,按照的是课本<<TCP/IP网络编程>>,这本书 很适合学完c++之后学生,真是一本很好的书
看完前几章后我写完了第一个服务端和客户端
但是传输的数据结果不对,看了好久也没找出来
//server.cpp
#include"iostream"//1.连接头文件winsock2.h和动态链接库ws2_32.lib#include "winsock2.h"#pragma comment(lib,"ws2_32.lib")//end_1using namespace std;void ErrorHanding(char* message);int main(int argc,char* argv[]){WSADATA wsa_data;SOCKET server_socket,client_socket;SOCKADDR_IN server_addr,client_addr;int size_client_addr;char message[]="hello world";if(argc!=2){cout<<"Usage: "<<argv[0]<<" <port>"<<endl;exit(1);}//2对winsocket的初始化,int WSAStartup(WORD wVersionRequested,LPWSADATA lpWSAData);//wVersionRequested是版本信息,lpWSAData是一个指向WSAData型的指针,WSAData作用不清楚if(WSAStartup(MAKEWORD(2,2),&wsa_data)!=0){//WSAStartup调用成功返回0ErrorHanding("WSAStartup() error!");exit(1);}//end_2//3创建套接字server_socket=socket(PF_INET,SOCK_STREAM,0);if(server_socket==INVALID_SOCKET){ErrorHanding("socket() error!");exit(1);}//end_3//4服务端地址的初始化memset(&server_addr,0,sizeof(server_addr));//server_addr赋值为0server_addr.sin_family=AF_INET;server_addr.sin_addr.s_addr=htonl(INADDR_ANY);//本机地址,是一个10进制server_addr.sin_port=htons(atoi(argv[1]));//atoi将字符串转化成整形,转化成10进制//end_4//5bind()if(bind(server_socket,(SOCKADDR*) &server_addr,sizeof(server_addr))==SOCKET_ERROR){//(SOCKADDR*)不止对应是ip4,也可以对应ip6 //所以SOCKADDR_IN(ip4)和SOCKADDR对应内存模型一致ErrorHanding("bind() error!");exit(1);}//end_5//6listen()if(listen(server_socket,5)==SOCKET_ERROR){ErrorHanding("listen() error!");exit(1);}//end_6//7accept()拿到client信息size_client_addr=sizeof(client_addr);cout<<"begin:"<<size_client_addr<<endl;client_socket=accept(server_socket,(SOCKADDR*) &client_socket,&size_client_addr);//???&size_client_addr为什么要的是这个地址//accept调用后将client地址大小放在&size_client_addr里,accept对ip4和ip6都有效cout<<"begin:"<<size_client_addr<<endl;if(client_socket==INVALID_SOCKET){ErrorHanding("accept() error!");exit(1);}//end_7//8send()send(client_socket,message,sizeof(message),0);//int send( SOCKET s, const char FAR *buf, int len, int flags ); 第4个参数一般是0//end_8closesocket(server_socket);closesocket(client_socket);WSACleanup();//对winsock的注销return 0;}void ErrorHanding(char* message){fputs(message,stderr);fputc('\n',stderr);}
//client.cpp
#include"iostream"#include "winsock2.h"#pragma comment(lib,"ws2_32.lib")#include "string"using namespace std;void ErrorHanding(char* message);int main(int argc,char* argv[]){WSADATA wsa_data;SOCKET client_socket;SOCKADDR_IN server_addr;char message[30];if(argc!=3){cout<<"Usage: "<<argv[0]<<" <IP> <port>"<<endl;exit(1);}if(WSAStartup(MAKEWORD(2,2),&wsa_data)!=0){ErrorHanding("WSAStartup() error!");exit(1);}client_socket=socket(PF_INET,SOCK_STREAM,0);if(client_socket==INVALID_SOCKET){ErrorHanding("socket() error!");exit(1);}memset(&server_addr,0,sizeof(server_addr));server_addr.sin_family=AF_INET;//server_addr.sin_addr.s_addr=htonl(INADDR_ANY);//服务端server_addr.sin_addr.s_addr=inet_addr(argv[1]);//和server端相比,这里传递的是字符串,用inet_addr()转化server_addr.sin_port=htons(atoi(argv[2]));if(connect(client_socket,(SOCKADDR*) &server_addr,sizeof(server_addr))==SOCKET_ERROR){ErrorHanding("socket() error!");exit(1);}int strlen=recv(client_socket,message,sizeof(message)-1,0);if(strlen==-1){ErrorHanding("recv() error!");exit(1);}cout<<message<<endl;closesocket(client_socket);WSACleanup();return 0;}void ErrorHanding(char* message){fputs(message,stderr);fputc('\n',stderr);}
//server.cpp
//client.cpp
传到client的数据不是hello world!
0 0
- 网络编程__第一个服务端和客户端
- QT网络编程:服务端和客户端编程
- JAVA--网络编程之服务端和客户端
- 27-网络编程-20-网络编程(常见客户端和服务端)
- java网络编程 (客户端、服务端)
- 迟迟开始学习的网络编程,C语言客户端服务端,python客户端服务端和mini木马
- 黑马程序员-网络编程-自定义服务端和客户端
- 『黑马程序员』---java--网络编程--客户端和服务端
- 网络编程--python实现 简单的服务端和客户端
- 网络编程--python 实现简单的UDP客户端和服务端
- unix网络编程 时间服务端和客户端设计
- linux网络编程4:客户端和服务端的聊天
- java网络编程(二) 客户端和服务端(TCP)
- 网络编程,要不要区分客户端和服务端
- 网络编程之服务端和客户端【Python版】
- socket网络编程实现客户端和服务端通信
- 网络编程学习笔记二 第一个客户端主程序
- 26-网络编程-12-网络编程(TCP协议-服务端和客户端交互)
- OpenDaylight开发实例toaster实验过程记录(1)--创建项目基本结构
- 欢迎使用CSDN-markdown编辑器
- mbstowcs()/wcstombs() 函数 宽字符转多字符互转
- 广东工业大学2016校赛 Problem F: 我是好人4
- hdu 3795 Billboard(线段树)
- 网络编程__第一个服务端和客户端
- 虚拟机linux上网问题(http://blog.csdn.net/wqx521/article/details/50832698)
- VC++套接字、数据库、文件读写综合应用-客户端读取文件套接字接收服务端写入数据库
- 十款最常见的Linux发行版
- C++游戏系列3:用多文件组织角色类
- OpenCV学习之3
- 【Android】9、活动的基本用法(二)
- paramsPreparParamsStack拦截器栈
- altcoin笔记------不断更新