Windows sockets网络开发-基本TCP套接字编程
来源:互联网 发布:八国集团中国知乎 编辑:程序博客网 时间:2024/04/29 21:45
1、服务器
// vs_demo.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include <Windows.h>#include <WinSock2.h>#pragma comment(lib, "ws2_32.lib")#define LISTEN_PORT 5000#define BUFFER_SIZE 1024int server_daemon(){WSADATA wsd;SOCKET sock_listen;int rc;if(WSAStartup(MAKEWORD(2,2), &wsd) != 0){printf("error:WSAStartup failed!\n");return -1;}//create socketsock_listen = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);if(INVALID_SOCKET == sock_listen){printf("error:socket failed!\n");WSACleanup();return -2;}//set socket addresssockaddr_in local_addr;local_addr.sin_family = AF_INET;local_addr.sin_port = htons(LISTEN_PORT);local_addr.sin_addr.s_addr = INADDR_ANY;//bindrc = bind(sock_listen, (struct sockaddr*)&local_addr, sizeof(sockaddr_in));if(SOCKET_ERROR == rc){printf("error:bind failed!\n");closesocket(sock_listen);WSACleanup();return -3;}//listenrc = listen(sock_listen, 5);if(SOCKET_ERROR == rc){printf("error:listen failed!\n");closesocket(sock_listen);WSACleanup();return -4;}//accept client's connectionsockaddr_in remote_addr;int remote_len = sizeof(remote_addr);SOCKET sock_conn = accept(sock_listen, (struct sockaddr*)&remote_addr, &remote_len);if(INVALID_SOCKET == rc){printf("error: accept failed!\n");closesocket(sock_listen);WSACleanup();return -5;}//recv datachar buffer[BUFFER_SIZE] = {0};rc = recv(sock_conn, buffer, BUFFER_SIZE, 0);char buffer1[BUFFER_SIZE] = {0};rc = recv(sock_conn, buffer1, BUFFER_SIZE, 0);//客户端调用多少次send,服务器端调用多少次的recvif(SOCKET_ERROR == rc){printf("error:recv failed!\n");closesocket(sock_listen);closesocket(sock_conn);WSACleanup();return -6;}printf("[recv]: %s\n", buffer);//exitclosesocket(sock_listen);closesocket(sock_conn);WSACleanup();return 0;}int _tmain(int argc, _TCHAR* argv[]){server_daemon();getchar();return 0;}
2、客户端
// vs_demo.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include <Windows.h>#include <WinSock2.h>#pragma comment(lib, "ws2_32.lib")#define LISTEN_PORT 5000#define BUFFER_SIZE 1024int client_daemon(){WSADATA wsd;if(WSAStartup(MAKEWORD(2,2),&wsd) !=0){printf("error:WSAStartup failed!\n");return -1;}SOCKET sock_conn;sock_conn = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);if(INVALID_SOCKET == sock_conn){printf("error:socket failed!\n");WSACleanup();return -2;}//server addresssockaddr_in server_addr;server_addr.sin_family = AF_INET;server_addr.sin_port = htons(LISTEN_PORT);server_addr.sin_addr.s_addr = inet_addr("127.0.0.1");//connectint rc = connect(sock_conn, (struct sockaddr*)&server_addr, sizeof(server_addr));if(SOCKET_ERROR == rc){printf("error:connect failed!\n");closesocket(sock_conn);WSACleanup();return -3;}//send datachar buffer[BUFFER_SIZE] = {0};strcpy_s(buffer, sizeof(buffer), "Hello,Server!");rc = send(sock_conn, buffer,(int) strlen(buffer), 0);char buffer1[BUFFER_SIZE] = {0};strcpy_s(buffer1, sizeof(buffer1), "this is tcp data!");rc = send(sock_conn, buffer1,(int) strlen(buffer1), 0);if(SOCKET_ERROR == rc){printf("error:send failed!\n");closesocket(sock_conn);WSACleanup();return -4;}printf("[send]: %s\n",buffer);//close socketclosesocket(sock_conn);WSACleanup();return 0;}int _tmain(int argc, _TCHAR* argv[]){client_daemon();getchar();return 0;}
0 0
- Windows sockets网络开发-基本TCP套接字编程
- Windows sockets网络开发-基本UDP套接字编程
- windows sock 网络编程基础知识--基本TCP套接字编程
- 《网络编程》基本 TCP 套接字编程
- Windows Sockets编程(二)套接字
- 网络编程—套接字基础 & 基本TCP套接字编程-基本套接字函数
- Unix网络编程—基本TCP套接字编程
- UNIX网络编程——基本TCP套接字编程
- UNIX网络编程---基本TCP套接字编程(四)
- UNIX网络编程——基本TCP套接字编程
- Unix网络编程之基本TCP套接字编程
- Linux网络编程(二) 基本TCP套接字编程
- 《UNIX网络编程》学习笔记:基本TCP套接字编程
- C/C++ 网络编程4: 基本TCP套接字编程
- UNIX网络编程3:基本TCP套接字编程
- Windows Sockets网络编程(4)套接字重叠IO模型
- 《unix网络编程》(8)基本TCP套接字
- 基本TCP套接字编程
- java对象序列化与反序列化
- jQuery 点击tr选中checkbox,并点击checkbox本身也正常,表格练习完工
- 数据结构复习之【图】二
- cocos2d-x封装一个转码的工具解决中文乱码可以直接拖过去用通用跨平台
- SSH配置之web.xml
- Windows sockets网络开发-基本TCP套接字编程
- oracle存储过程
- 坐标系转换之convertToNodeSpace 与 convertToWorldSpace
- 水电费电饭锅电饭锅额的体育
- UVA 11205 - The broken pedometer
- 从零开始学android<SeekBar滑动组件.二十二.>
- Spring中Value注解的使用
- 1、C# 全局变量 静态变量
- 最小生成树 prim hdu1233 还是畅通工程