久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

如何進行TCP Socket中的linux實現

159次閱讀
沒有評論

共計 2443 個字符,預計需要花費 7 分鐘才能閱讀完成。

這篇文章給大家介紹如何進行 TCP Socket 中的 linux 實現,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

TCP Server 端:

#include iostream

#include cstring

#include sys/types.h

#include sys/socket.h

#include netinet/in.h

#include errno.h

#define  SRVPORT  10005

#define  CONNECT_NUM  5

#define  MAX_NUM  80

using namespace std;

int main(int argc, char* argv[] )

{

int aSock = -1, srcSock = -1;

int nSrvAddr = -1,  cnt = -1;

sockaddr_in  sa, serverSockAddr;

sockaddr srvSockAddr;

memset(srvSockAddr, 0, sizeof(srvSockAddr) );

aSock = socket(AF_INET, SOCK_STREAM, 0);

if(aSock 0)

{

cout Create srcSock Error! endl;

return 0;

}

memset(serverSockAddr, 0, sizeof(serverSockAddr) );

memset(sa, 0, sizeof(sa) );

sa.sin_family = AF_INET;

sa.sin_port  = htons((u_short)SRVPORT);

sa.sin_addr.s_addr = htonl(INADDR_ANY);

if(bind( aSock, (sockaddr*) sa, sizeof(sa) ) 0 )

{

cout Bind Error! endl;

return 0;

}

if(listen(aSock, CONNECT_NUM) 0 )

{

cout Listen Error! endl;

return 0;

}

cout Server has been opened: endl;

while(true)

{

cnt = -1;

nSrvAddr = sizeof(sockaddr_in);

srcSock = accept(aSock, (sockaddr*) serverSockAddr, (socklen_t *) nSrvAddr );

if(srcSock 0)

{

cout Server accept Error@ endl;

cout srcSock is: srcSock endl;

cout Error No is : errno endl;

perror(server:

return  0;

}

char szRevMeg[MAX_NUM] = {0};

char szSdMeg[MAX_NUM] = {Hello World!};

cout Begin to read: endl;

cnt = read(srcSock, szRevMeg, MAX_NUM);

if(cnt 0)

{

cout Read Error! endl;

return 0; //Just to test

}

cout cnt is: cnt endl;

cout Complete Read: endl;

cout szRevMeg endl;

cnt = write(srcSock, szSdMeg, strlen(szSdMeg)+1 );

if(cnt 0)

{

cout Write Error! endl;

}

cout Write Completed! endl;

close(srcSock);

cout endl;

}

close(aSock);

return 0;

}

TCP Client 端:

#include iostream

#include cstring

#include sys/types.h

#include sys/socket.h

#include netinet/in.h

#include arpa/inet.h

#define  PORT  10005

#define  SRVIP  127.0.0.1 // 222.26.209.141

#define  RCVNUM  1024

using namespace std;

int main()

{

int clientSock, nRecvBytes = -1;

sockaddr_in  sa;

char Buffer[RCVNUM] = {0};

clientSock = socket(AF_INET, SOCK_STREAM, 0);

if(clientSock 0)

{

cout Client Socket create error! endl;

return 0;

}

memset(sa, 0, sizeof(sa) );

sa.sin_family = AF_INET;

sa.sin_port  = htons(PORT);

sa.sin_addr.s_addr = inet_addr(SRVIP);

if(connect( clientSock, (sockaddr*) sa, sizeof(sockaddr) ) 0 )

{

cout Connect Error! endl;

return 0;

}

cout Client has been opened: endl;

strcpy(Buffer, Here client said:  hello);

cout Begin to write: endl;

write(clientSock, Buffer, strlen(Buffer)+1 );

cout Write completed endl;

memset(Buffer, 0, sizeof(Buffer) );

if(nRecvBytes = read( clientSock,Buffer, RCVNUM) 0 )

{

cout Read Message Error! endl;

return 0;

}

cout Server says: Buffer endl;

close(clientSock);

cout End of file endl;

return 0;

}

關于如何進行 TCP Socket 中的 linux 實現就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-16發表,共計2443字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 桃源县| 融水| 盐津县| 平陆县| 菏泽市| 枞阳县| 普格县| 姜堰市| 新乡县| 曲阜市| 秀山| 广西| 邢台市| 青河县| 桃源县| 青神县| 永安市| 安丘市| 神木县| 宝鸡市| 英山县| 仁怀市| 墨脱县| 新田县| 加查县| 沈丘县| 潼关县| 化州市| 龙山县| 孟连| 灌云县| 普格县| 正安县| 桦川县| 环江| 乌审旗| 仪陇县| 板桥市| 苗栗市| 廊坊市| 宿松县|