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

TCP 通信

2016-06-12 19:45 316 查看
#include <sys/types.h>

#include <sys/socket.h>

#include <stdio.h>

#include <netinet/in.h>

#include <arpa/inet.h>

#include <unistd.h>

#include <string.h>

#include <netdb.h>

#include <sys/ioctl.h>

#include <termios.h>

#include <stdlib.h>

#include <sys/stat.h>

#include <fcntl.h>

#include <signal.h>

#include <sys/time.h>

int main(int argc,char **argv)

{

pid_t fd;

const char buff[] = "Hello! Welcome here gggggggggggg!\r\n"; //定义要发送的数据缓冲区;

int sockfd,connsock; //定义一个socket套接字,用于通讯

struct sockaddr_in serveraddr;//定义网络套接字地址结构

if(argc!= 2)

{

printf("Usage: echo ip地址");

exit(0);

}

sockfd =socket(AF_INET,SOCK_STREAM,0); //创建一个套接字

bzero(&serveraddr,sizeof(serveraddr));

serveraddr.sin_family = AF_INET; //指定使用的通讯协议族

serveraddr.sin_port = htons(5000);//指定要连接的服务器的端口

inet_pton(AF_INET, argv[1], &serveraddr.sin_addr);

connect(sockfd,(struct sockaddr *)&serveraddr,sizeof(serveraddr)); //连接服务器

send(sockfd,buff,sizeof(buff), 0);//向客户端发送数据

close(sockfd); //关闭套接字

return(0);

}

//服务器端代码

#include <sys/types.h>

#include <sys/socket.h>

#include <stdio.h>

#include <netinet/in.h>

#include <arpa/inet.h>

#include <unistd.h>

#include <string.h>

#include <netdb.h>

#include <sys/ioctl.h>

#include <termios.h>

#include <stdlib.h>

#include <sys/stat.h>

#include <fcntl.h>

#include <signal.h>

#include <sys/time.h>

void main()

{

pid_t fd;

int listensock,connsock;

char recvbuff[100]; //定义要接收的数据缓冲区

struct sockaddr_in serveraddr; //定义网络套接字地址结构

listensock = socket(AF_INET,SOCK_STREAM,0); //创建一个套接字,用于监听

bzero(&serveraddr,sizeof(struct sockaddr)); //地址结构清零

serveraddr.sin_family = AF_INET; //指定使用的通讯协议族

serveraddr.sin_addr.s_addr = htonl(INADDR_ANY); //指定接受任何连接

serveraddr.sin_port = htons(5000); //指定监听的端口

bind(listensock,(struct sockaddr *)&serveraddr,sizeof(struct sockaddr_in));//给套接口邦定地址

listen(listensock,1024); //开始监听

connsock = accept(listensock,(struct sockaddr *)NULL, NULL);

//建立通讯的套接字,accept函数,等待客户端程序使用connect函数的连接

recv(connsock,recvbuff,sizeof(recvbuff),0); //接收服务器的数据

printf("%s\n",recvbuff); //打印接收到的数据

sleep(2);

close(connsock); //关闭通讯套接字

close(listensock); //关闭监听套接字

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