今天给各位分享c语言socket长链接的知识,其中也会对C语言 socket进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
1、怎么用C语言 socket 实现 下载网页链接文件!!!2、在windows下用C语言如何实现socket网络编程,需要用到哪些头文件或者库?3、C语言socket链接新手求帮忙4、关于linux环境C语言socket编程基础的问题
怎么用C语言 socket 实现 下载网页链接文件!!!
网页上的链接,一般都是http下载,比如你右键一个链接,然后另存为这种。http是在tcp之上的协议,你要自己用socket实现,既费时费力,也没有必要,可以去搜一些开源的http协议开发的库,可以找到很多。同样的,如果是ftp下载的话,也可以直接找支持的开源库,进行开发。总之要先明确一点,你的下载时通过何种协议进行的,再找对应的开源库就OK了。
在windows下用C语言如何实现socket网络编程,需要用到哪些头文件或者库?
需要用到的头文件包含:
#include winsock2.h
#include windows.h
与Linux环境下socket编程相比,windows环境多了一个步骤:启动或者初始化winsock库
Winsock,一种标准API,一种网络编程接口,用于两个或多个应用程序(或进程)之间通过网络进行数据通信。具有两个版本:
Winsock 1:
Windows CE平台支持。
头文件:WinSock.h
库:wsock32.lib
Winsock 2:
部分平台如Windows CE貌似不支持。通过前缀WSA可以区别于Winsock 1版本。个别函数如WSAStartup、WSACleanup、WSARecvEx、WSAGetLastError都属于Winsock 1.1规范的函数;
头文件:WinSock2.h
库:ws2_32.lib
mswsock.h用于编程扩展,使用时必须链接mswsock.dll
扩展资料
winsock库的加载与卸载:
加载:int WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData);
加载成功,返回值为0。
WORD wVersionRequested:加载的winsock版本,使用宏MAKEWORD(x, y),x表示高字节,y表示低字节。然而使用时MAKEWORD(2, 2)。高字节与低字节相同~~
LPWSADATA lpWSAData:WSADATA结构的指针,传入参数后,系统帮助我们填充版本信息。有兴趣的可以看看结构体内容,不过基本用不着。
卸载:int WSACleanup(void);比起加载,卸载的函数真是轻松愉快。
C语言socket链接新手求帮忙
/* 服务器 */
#include stdio.h
#include winsock2.h
#pragma comment (lib,”ws2_32″)
#includewindows.h
int main (int a,char* b[])
{
WSADATA wsdata;
WSAStartup (MAKEWORD(2,2),wsdata);
SOCKET listenSock=socket(PF_INET,SOCK_STREAM,IPPROTO_TCP),acceptSock;
int n=sizeof (SOCKADDR);
struct sockaddr_in sockaddr;
sockaddr.sin_family=PF_INET;
sockaddr.sin_addr.S_un.S_addr=inet_addr(“127.0.0.1”);
sockaddr.sin_port=htons(827);
bind(listenSock,(SOCKADDR*)sockaddr,n);
listen (listenSock,1);
acceptSock=accept(listenSock,(SOCKADDR*)sockaddr,n);
send (acceptSock,”hello client\r\n”,strlen(“hello client\r\n”)+sizeof (char),NULL);
closesocket (acceptSock);
closesocket (listenSock);
WSACleanup();
return 0;
}
/* 客户端 */
#include stdio.h
#include winsock2.h
#pragma comment (lib,”ws2_32″)
#includewindows.h
int main (int a,char* b[])
{
WSADATA wsdata;
WSAStartup (MAKEWORD(2,2),wsdata);
char szBuffer[255]={0};
SOCKET connSock=socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);
struct sockaddr_in sockAddr;
sockAddr.sin_family=PF_INET;
sockAddr.sin_addr.S_un.S_addr=inet_addr(“127.0.0.1”);
sockAddr.sin_port=htons(827);
connect(connSock,(SOCKADDR*)sockAddr,sizeof(SOCKADDR));
recv(connSock,szBuffer,255,NULL);
printf (“z=%s\n\r”,szBuffer);
closesocket(connSock);
WSACleanup();
return 0;
}
尽量不要用意义不明的变量名,看起来很累
关于linux环境C语言socket编程基础的问题
你这个服务端的逻辑有问题(当然也可以说是客户端逻辑有问题,这是相对的)。
客户端使用的是长连接,也就是一次连接,多次通话。而服务端则是短连接,一次连接,一次通话,然后就断开了。
想实现你的需求很 简单,把服务端的accept放在while的外面就可以了。
但你这个代码不完整,最后没有关闭句柄的语句,应该把这些内容补充完整。良好的编码习惯,要把打开的文件、句柄,分配的内存等,都关闭、释放掉。不要想着程序结束会自动释放。
关于c语言socket长链接和C语言 socket的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。