您的位置:首页 > 理论基础 > 计算机网络

TCP/IP 三次握手的代码笔记

2017-01-17 20:29 351 查看
//server

#include <sys/socket.h>
#include <iostream>
#include <netinet/in.h>
#include <unistd.h>
#include <arpa/inet.h>
using namespace std;

char buf[512];
int nByte;

int main()
{
//create socket
int fd = 0;
if((fd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
{
cout << "socket creating error!\n";
return -1;
}

//bind
struct sockaddr_in srv;
srv.sin_family = AF_INET;
srv.sin_port = htons(6666);
srv.sin_addr.s_addr = htonl(INADDR_ANY);
if(bind(fd, (struct sockaddr *) &srv, sizeof(srv)) < 0)
{
cout << "bind error!\n";
return -1;
}

//listen
if(listen(fd, 5) < 0)
{
cout << "listen error!\n";
return -1;
}

//accept
struct sockaddr_in cli;
int newfd = 0;
auto cli_len = sizeof(cli);
newfd = accept(fd, (struct sockaddr *)&cli, &cli_len);
if(newfd < 0)
{
cout << "accept error\n";
return -1;
}

if((nByte = read(newfd, buf, sizeof(buf))) < 0)
{
cout << "read error!\n";
}

cout << buf << endl;
close(newfd);

return 0;
}

//client
#include <sys/socket.h>
#include <iostream>
#include <netinet/in.h>
#include <unistd.h>
#include <arpa/inet.h>
using namespace std;

int nBytes;

int main()
{
char buf[512] = "alex is cool";
//create socket
int fd = 0;
if((fd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
{
cout << "socket creating error!\n";
return -1;
}

//connect
struct sockaddr_in srv;
srv.sin_family = AF_INET;
srv.sin_port = htons(6666);
srv.sin_addr.s_addr = inet_addr("192.168.101.137");
if(connect(fd, (struct sockaddr*)&srv, sizeof(srv)) < 0)
{
cout << "connect error!\n";
return -1;
}

if((nBytes = write(fd, buf, sizeof(buf))) < 0);
{
cout << "write error!\n";
return -1;
}

close(fd);

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++ TCP IP SOCKET