TCP编程模型:
服务器端程序
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>/*定义了struct sockaddr_in*/
void main()
{
int sockfd;
/*创建socket*/
sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd==-1)
{
printf("create socket false");
exit(1);
}
/*绑定地址*/
struct sockaddr_in server_addr;
server_addr.sin_family=AF_INET;
server_addr.sin_port=htons(5000);
server_addr.sin_addr.s_addr=htonl(INADDR_ANY);
if(bind(sockfd,(const struct sockaddr *)(&server_addr),sizeof(server_addr))==-1)
{
printf("bind false");
exit(1);
}
/*监听端口*/
listen(sockfd,3);
/*等待连接*/
int newfd;
struct sockaddr_in client_addr;
int addrlen=sizeof(client_addr);
newfd=accept(sockfd,(struct sockaddr *)(&client_addr),&addrlen);
/*收发数据*/
char buf[128];
recv(newfd,buf,128,0);
printf("the message is from :%s\n",inet_ntoa(client_addr.sin_addr));
printf("the message received is %s\n",buf);
/*结束连接*/
close(newfd);
close(sockfd);
}
客户端程序
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>/*定义了struct sockaddr_in*/
void main()
{
/*创建socket*/
int sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd==-1)
{
printf("create socket false");
exit(1);
}
/*连接服务器*/
struct sockaddr_in server_addr;
server_addr.sin_family=AF_INET;
server_addr.sin_port=htons(5000);
server_addr.sin_addr.s_addr=inet_addr("192.168.137.246");
if(connect(sockfd,(const struct sockaddr *)(&server_addr),sizeof(server_addr))==-1)
{
printf("connect false");
exit(1);
}
/*收发数据*/
printf("please enter your message\n");
char buf[128];
scanf("%s",buf);
send(sockfd,buf,128,0);
/*结束连接*/
close(sockfd);
}