借此地方整理以下socket編程的多種語(yǔ)言的實(shí)現(xiàn),socket可以跨平臺(tái)的通信,因此多語(yǔ)言、多平臺(tái)下的實(shí)現(xiàn)有必要了解的。代碼都是源自網(wǎng)上,感謝網(wǎng)友的分享。
socket編程在windows下的C語(yǔ)言實(shí)現(xiàn),dev C++下編譯通過(guò)
編譯時(shí)設(shè)置編譯選項(xiàng) 工具-->編譯選項(xiàng)-->編譯器,勾選在連接器命令行加入以下命令,在對(duì)話框中填-lwsock32
//server.c
#include <stdio.h>
#include <Winsock2.h>
int main()
{
??? WORD wVersionRequested;
??? WSADATA wsaData;
??? int err;
???
??? wVersionRequested = MAKEWORD( 1, 1 );
???
??? err = WSAStartup( wVersionRequested, &wsaData );
??? if ( err != 0 ) {
??????? return;
??? }
???
??? if ( LOBYTE( wsaData.wVersion ) != 1 ||
??? HIBYTE( wsaData.wVersion ) != 1 ) {
??????? WSACleanup();
??????? return;
??? }
??? SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);
???
??? SOCKADDR_IN addrSrv;
??? addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
??? addrSrv.sin_family=AF_INET;
??? addrSrv.sin_port=htons(6000);
???
??? bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
???
??? listen(sockSrv,5);
???
??? SOCKADDR_IN addrClient;
??? int len=sizeof(SOCKADDR);
??? while(1)
??? {
??????? SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);
??????? char sendBuf[50];
??????? sprintf(sendBuf,"Welcome %s to here!",inet_ntoa(addrClient.sin_addr));
??????? send(sockConn,sendBuf,strlen(sendBuf)+1,0);
??????? char recvBuf[50];
??????? recv(sockConn,recvBuf,50,0);
??????? printf("%s\n",recvBuf);
??????? closesocket(sockConn);
??? }
}
//客戶端代碼
#include <stdio.h>
#include <Winsock2.h>
int main()
{
??? WORD wVersionRequested;
??? WSADATA wsaData;
??? int err;
???
??? wVersionRequested = MAKEWORD( 1, 1 );
???
??? err = WSAStartup( wVersionRequested, &wsaData );
??? if ( err != 0 ) {
??????? return;
??? }
???
??? if ( LOBYTE( wsaData.wVersion ) != 1 ||
??????? HIBYTE( wsaData.wVersion ) != 1 ) {
??????? WSACleanup( );
??????? return;
??? }
??? SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);
???
??? SOCKADDR_IN addrSrv;
??? addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
??? addrSrv.sin_family=AF_INET;
??? addrSrv.sin_port=htons(6000);
??? connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
??? send(sockClient,"hello",strlen("hello")+1,0);
??? char recvBuf[50];
??? recv(sockClient,recvBuf,50,0);
??? printf("%s\n",recvBuf);
??? closesocket(sockClient);
??? WSACleanup();
}
只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。 | ||
![]() |
||
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問(wèn)
管理
|
||
相關(guān)文章:
|
||