萬盛學電腦網

 萬盛學電腦網 >> 網絡基礎知識 >> socket(計算機專業術語)

socket(計算機專業術語)

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):

copyright © 萬盛學電腦網 all rights reserved