cudp编程
发布时间: 2023-12-04 13:41:32
① 请教用c语言编的借助UDP协议实现的文件传输的程序
本程序在 Windows 7 Visual Studio 2015 和 Linux Ubuntu 15.04 GCC 5.11 下均编译运行测试通过。
本程序支持 Windows 和 Linux 之间传送文件,如果要在 Windows 和 Linux 之间传送文件,文件名不能出现中文。
本程序支持无线 WiFi,支持 USB 收发器,但仅支持局域网内传送文件,传送文件需要输入对方的 IP 地址。
本程序包括服务器端和客户端,既可以发送文件又可以接收文件。如果要在同一台机器上测试需要同时打开两个程序。
Windows 下查看本机 IP 地址的命令是:
ipconfig
Linux 下查看本机 IP 地址的命令是:
ifconfig
以下是程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#ifdef_MSC_VER
#include<winsock2.h>
#include<windows.h>
#pragmacomment(lib,"ws2_32.lib")
#else
#include<pthread.h>
#include<unistd.h>
#include<signal.h>
#include<sys/socket.h>
#include<arpa/inet.h>
#endif
//存放发送接收字符数组大小
#defineSIZEA65501
//每次发送接收字节数
#defineSIZEB65500
typedefstructsockaddr_inSockAddrIn;
SockAddrInserverAddr,remoteAddr,clientAddr;
//端口号
intiServerPort,iClientPort;
//新建socket信息
intiUDP;
//字符串转整型
intstrToInt(char*acStr)
{
inti,iIndex=0,iNum=0,iSize=0;
if(acStr[0]=='+'||acStr[0]=='-')
iIndex=1;
for(iSize=iIndex;;iSize++)
if(acStr[iSize]<'0'||acStr[iSize]>'9')
break;
for(i=iIndex;i<iSize;i++)
iNum+=(int)pow(10,iSize-i-1)*(acStr[i]-48);
if(acStr[0]=='-')
iNum=-iNum;
returniNum;
}
//整型转字符串
voidintToStr(intiInt,char*acStr)
{
intiIndex=0,iSize,iNum,iBit,i,j;
if(iInt<0)
{
acStr[0]='-';
iInt=-iInt;
iIndex=1;
}
for(i=0;;i++)
if(iInt<pow(10,i))
break;
iSize=i;
for(i=0;i<iSize;i++)
{
iNum=pow(10,iSize-i-1);
iBit=iInt/iNum;
iInt-=iNum*iBit;
acStr[i+iIndex]=iBit+48;
}
if(iSize!=0)
acStr[iSize+iIndex]='