91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

此程序利用C語言編程,采用UDP協議實現了Windows客戶端與linux服務器端視頻文件的傳輸,代碼親自編寫,保證可用。

資源截圖

代碼片段和文件信息

/*
?*?pub1.c
?*
?*??Created?on:?2017年7月2日
?*??????Author:?Administrator
?*/
#ifdef?WIN
#include?
#else
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#define?SOCKET?int
#endif

#include?
#include?“pub.h“

//#define?BUFSIZE?262144?//256K
//#define?BUFSIZE?131072?//128K
//#define?BUFSIZE?65536?//64K
#define?BUFSIZE?32768?//64K
void?getfilename(char?*filename?char?*name)
{
int?len?=?strlen(filename);
int?i;
for?(i=(len-1);i>=0;i--)
{
if?((filename[1]?==?‘\\‘?||?filename[i]?==?‘/‘))
{
break;
}
}
strcpy(name?&filename[i+1]);
return?;
}

int?init_socket()
{
#ifdef?WIN
WORD?wVersionRequested;
WSADATA?wsaDATA;
int?err;
wVersionRequested?=?MAKEWORD(1?1);
err?=?WSAStartup(wVersionRequested?&wsaData);
if?(err?!=?0)
{
return?-1;
}
if?(LOBYTE(wsaData.wVersion)?!=?1?||?HIBYTE(wsaData.wVersion)?!=?1)
{
WSACleanup();
return?-1;
}
#endif
return?0;
}


SOCKET?create_recv_socket(int?port)
{
// if?(init_socket()?==?-1)
// {
// printf(“init_socket?fun?error\n“);
// return?0;
// }
SOCKET?st?=?socket(AF_INET?SOCK_DGRAM?0);??//建立TCP?socket
if?(st?==?0)
{
return?0;
}
struct?sockaddr_in?addr;
memset(&addr?0?sizeof(addr));
addr.sin_family?=?AF_INET;
addr.sin_port?=?htons(port);
addr.sin_addr.s_addr?=?htonl(INADDR_ANY);

if?(bind(st?(struct?sockaddr?*)?&addr?sizeof(addr))?==?-1)
{
printf(“bind?failed?%s\n“?strerror(errno));
return?0;
}
return?st;
}

SOCKET?create_send_socket()
{
if?(init_socket()?==?-1)
{
printf(“init_socket?fun?error\n“);
return?0;
}
SOCKET?st?=?socket(AF_INET?SOCK_DGRAM?0);??//建立TCP?socket
if?(st?==?0)
{
return?0;
}
return?st;
}

int?send_work(const?char?*hostname?int?port?char?*filename)
{
SOCKET?st_send?=?create_send_socket();
SOCKET?st_recv?=?create_recv_socket(port?+?1);
if?(st_send?==?0)
{
printf(“st_send?create?error\n“);
return?0;
}
if?(st_recv?==?0)
{
printf(“st_recv?create?error\n“);
return?0;
}

FILE?*fd?=?fopen(filename?“rb“);
if?(fd?==?NULL)
{
printf(“open?%s?failed?%s\n“?filename?strerror(errno));
return?0;
}
char?*buf?=?malloc(BUFSIZE);
memset(buf?0?BUFSIZE);
getfilename(filename?buf);

struct?sockaddr_in?addr;
memset(&addr?0?sizeof(addr));
addr.sin_family?=?AF_INET;
addr.sin_port?=?htons(port);
addr.sin_addr.s_addr?=?inet_addr(hostname);
size_t?rc?=?sendto(st_send?buf?strlen(buf)?0?(struct?sockaddr?*)&addr?sizeof(addr));
if?(rc?<=?0)
{
printf(“send?failed?%s\n“?strerror(errno));
}
else
{
struct?sockaddr_in?client_addr;
#ifdef?WIN
int?len?=?0;
#else
unsigned?int?len?=?0;
#endif

????len?=?sizeof(client_addr);
memset(&client_addr?0?sizeof(client_addr));

memset(buf?0?BUFSIZE);
if?((rc?=?recvfrom(st_recv?buf?BUFSIZE?0
(struct?sockaddr?*)?&client_addr?&len))?<=?0)
{

printf(“recv?failed?%s\n“?strerror(errno));
}
else
{
printf(“%s

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件????????372??2017-07-02?22:40??pub.h

?????文件????????797??2017-07-03?13:42??udp.c

?????文件????????520??2017-07-02?20:49??udprecv.c

?????文件???????5562??2017-07-03?16:15??pub.c

-----------?---------??----------?-----??----

?????????????????7251????????????????????4


評論

共有 條評論