【网络编程】——windows socket 编程
2016-06-03 10:36
471 查看
测试demo
以上是 server 端,一下是 client 端:
#include <winsock2.h> #include <stdio.h> #include <string.h> #include <stdlib.h> #if 0 #define TCP #else #define UDP #endif #pragma comment(lib, "ws2_32.lib") char *ip = "10.8.2.60"; #ifdef UDP short port = 1025; #endif #ifdef TCP short port = 2222; #endif SOCKET fd; int init(void) { WSADATA wsaData; int nRet; if((nRet = WSAStartup(MAKEWORD(2,2),&wsaData)) != 0){ printf("WSAStartup failed!\n"); exit(0); } } int init_socket(void){ SOCKADDR_IN local; #ifdef UDP if ((fd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == -1){ #endif #ifdef TCP if ((fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == -1){ #endif printf("%d\n", WSAGetLastError()); perror("socket"); //getchar(); return -1; } printf("fd:%d start......\n", fd); local.sin_family = AF_INET; local.sin_port = htons((short)port); local.sin_addr.s_addr = inet_addr(ip); //local.sin_addr.S_un.S_addr = inet_addr(ip); if (bind(fd, (SOCKADDR *)&local, sizeof(local)) == SOCKET_ERROR) { printf("reason %d ", WSAGetLastError()); printf("bind failed!\n"); getchar(); return -1; } #ifdef TCP if (listen(fd, 10) == -1){ perror("listen"); return -1; } #endif return 0; } int main(int argc, char *argv[]) { char buffer[2048]; int size; SOCKADDR_IN from; int addrlen = sizeof(from); SOCKET client; unsigned int index = 0; init(); if (init_socket()) { //printf("init socket error!\n"); return -1; } while (1){ index++; #ifdef UDP size = recvfrom(fd, buffer, sizeof(buffer), 0, NULL, NULL); printf("recvfrom:%d index:%u\n", size, index); #endif #ifdef TCP if ((client = accept(fd, (SOCKADDR *)&from, &addrlen)) == -1){ perror("accept"); return -1; } size = recv(client, buffer, sizeof(buffer), 0); printf("recv:%d\n", size); #endif } getchar(); return 0; }
以上是 server 端,一下是 client 端:
#include <winsock2.h> #include <stdio.h> #include <string.h> #include <stdlib.h> #if 0 #define UDP #else #define TCP #endif #pragma comment(lib, "ws2_32.lib") char *ip = "10.8.2.56"; #ifdef UDP short port = 1025; #else short port = 2222; #endif SOCKET fd; int init(void) { WSADATA wsaData; int nRet; if((nRet = WSAStartup(MAKEWORD(2,2),&wsaData)) != 0){ printf("WSAStartup failed!\n"); exit(0); } } int init_socket(void){ #ifdef UDP if ((fd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == -1){ #else SOCKADDR_IN local; if ((fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == -1){ #endif printf("%d\n", WSAGetLastError()); perror("socket"); //getchar(); return -1; } #ifdef TCP local.sin_family = AF_INET; local.sin_port = htons(port); local.sin_addr.S_un.S_addr = inet_addr(ip); if (connect(fd, (SOCKADDR *)&local, sizeof(local)) == SOCKET_ERROR) { printf("connect error!\n"); perror("connect"); return -1; } #endif printf("fd:%d start......\n", fd); return 0; } int main(int argc, char *argv[]) { char buffer[512]; int size; int result = 0; unsigned int index = 0; init(); if (init_socket()){ return -1; } #ifdef UDP SOCKADDR_IN sin; int addrlen = sizeof(sin); sin.sin_family = AF_INET; sin.sin_port = htons(port); sin.sin_addr.s_addr = inet_addr(ip); #endif memset(buffer, 1, sizeof(buffer)); while (1) { #ifdef UDP result = sendto(fd, buffer, sizeof(buffer), 0, (SOCKADDR *)&sin, addrlen); #else result = send(fd, buffer, sizeof(buffer), 0); #endif printf("result:%d, index:%d\n", result, index); getchar(); index++; } return 0; }
相关文章推荐
- TCP/IP Modbus消息体格式
- 安装Apache后查看httpd状态出现“httpd dead but subsys locked”问题
- http的get方式连接服务器,获取数据
- poj 2112(二分+网络流)
- 用异步获取网络数据Json
- HTTP协议
- TCP三次握手,4次挥手
- java 通过http post方式传参参数json 方式
- Linux_ 网络配置及操作
- JavaWeb:报错信息The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
- HTTP协议头及错误码详解
- HTTP和HTTPS的区别
- Android学习笔记六十四:浅谈TCP/IP协议栈(二)IP地址
- Android学习笔记六十三:浅谈TCP/IP协议栈(一)入门知识
- TcpFlow(1.4.6 C++版本)源代码分析
- 理解 LSTM 网络
- Android实现网络多线程断点续传下载(二)
- TCP连接复用
- Http协议 详解(转载)
- Android VideoView播放网络视频