基本信息
源码名称:windows网络编程_文件传输
源码大小:0.23M
文件格式:.zip
开发语言:C/C++
更新时间:2020-12-29
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 3 元×
微信扫码支付:3 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
简单的tcp/ip协议服务端和客户端连接,文件传输
int gConnectSocket_TCP(SOCKET &_socket, char *_ipAddr, int _port, int _bufsize/*=100*1024*/, int timeout/* = 5000*/) { int err; //创建Socket句柄 _socket = socket(AF_INET, SOCK_STREAM, 0); if (INVALID_SOCKET == _socket) { //printf("socket failed with error: %ld\n", WSAGetLastError()); WSACleanup(); return 1; } //设置服务器IP地址 SOCKADDR_IN addrSrv; addrSrv.sin_addr.S_un.S_addr = inet_addr(_ipAddr); addrSrv.sin_family = AF_INET; addrSrv.sin_port = htons(_port); //resize recv buffer if (::setsockopt(_socket, SOL_SOCKET, SO_RCVBUF, (char*)&_bufsize, sizeof(_bufsize))) { goto error; } int StreamTimeOut = timeout; // set receive timeout if (::setsockopt(_socket, SOL_SOCKET, SO_RCVTIMEO, (char *)&StreamTimeOut, sizeof(StreamTimeOut)) == SOCKET_ERROR) { goto error; } //set non-blocking mode unsigned long ul = 1; err = ioctlsocket(_socket, FIONBIO, (unsigned long*)&ul); if (err == SOCKET_ERROR) { goto error; } //connect to camera int ret = connect(_socket, (const struct sockaddr *)&addrSrv, sizeof(addrSrv)); //TRACE(L"videoSocket connect returnVal=%d",ret); //use select poll connection status struct timeval ConnectTimeOut; fd_set w; FD_ZERO(&w); FD_SET(_socket, &w); ConnectTimeOut.tv_sec = timeout / 1000; ConnectTimeOut.tv_usec = 0; err = select(0, 0, &w, 0, &ConnectTimeOut); if (err <= 0) { goto error; } //resume blocking mode unsigned long mode = 0; err = ioctlsocket(_socket, FIONBIO, (unsigned long*)&mode); if (err == SOCKET_ERROR) { goto error; } return 0; error: return -2; }