您现在的位置: 万盛学电脑网 >> 网络安全 >> 网络基础知识 >> 正文

socket(计算机专业术语)

作者:佚名    责任编辑:admin    更新时间:2022-06-22

fromlen:(可选)

函数原型:

int sendto( SOCKET s, const char FAR* buf, int size, int flags, const struct sockaddr FAR* to, int tolen);

参数说明:

s:套接字

buf:待发送数据的缓冲区

size:缓冲区长度

flags:调用方式标志位, 一般为0, 改变Flags,将会改变Sendto发送的形式

addr:(可选)指针,指向目的套接字的地址

tolen:addr所指地址的长度

返回值:

如果成功,则返回发送的字节数,失败则返回SOCKET_ERROR。

函数原型:

int accept( int fd, struct socketaddr* addr, socklen_t* len);

参数说明:

fd:套接字描述符。

addr:返回连接着的地址

len:接收返回地址的缓冲区长度

返回值:

成功返回客户端的文件描述符,失败返回-1。

服务端(Server):

#include<winsock2.h> #include<stdio.h> #pragmacomment(lib,"ws2_32.lib") voidmain() { WSADATA wsaData; SOCKET sockServer; SOCKADDR_IN addrServer; SOCKET sockClient; SOCKADDR_IN addrClient; WSAStartup(MAKEWORD(2,2),&wsaData); sockServer=socket(AF_INET,SOCK_STREAM,0); addrServer.sin_addr.S_un.S_addr=htonl(INADDR_ANY);//INADDR_ANY表示任何IP addrServer.sin_family=AF_INET; addrServer.sin_port=htons(6000);//绑定端口6000 bind(sockServer,(SOCKADDR*)&addrServer,sizeof(SOCKADDR)); //Listen监听端 listen(sockServer,5);//5为等待连接数目 printf("服务器已启动:\n监听中...\n"); intlen=sizeof(SOCKADDR); charsendBuf[100];//发送至客户端的字符串 charrecvBuf[100];//接受客户端返回的字符串 //会阻塞进程,直到有客户端连接上来为止 sockClient=accept(sockServer,(SOCKADDR*)&addrClient,&len); //接收并打印客户端数据 recv(sockClient,recvBuf,100,0); printf("%s\n",recvBuf); //关闭socket closesocket(sockClient); WSACleanup();}

客户端 (Client):