如何进行TCP Socket中的linux实现

86次阅读
没有评论

共计 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字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)