这个是最最最基本的例程,先开一个坑,稍后再慢慢完善。
服务端程序
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<sys/stat.h>
#include<sys/ipc.h>
#include<sys/time.h>
#include<sys/types.h>
#include<fcntl.h>
#include<errno.h>
#include<unistd.h>
#include<dirent.h>
#include<signal.h>
#include<sys/socket.h>
#include<netinet/in.h>
#define port 4006
void sigfun(int signal)
{
while(waitpid(-1,NULL,WNOHANG));
}
int main(void)
{
int flag = 0;
int socket_fd,connect_fd;
socket_fd = socket(AF_INET,SOCK_STREAM,0); //creat a socket(TCP)
if (socket_fd < 0)
{
perror("creat a socket failed!\n");
return -1;
}
struct sockaddr_in srv; //creat an address struct
bzero(&srv,sizeof(srv));
srv.sin_family = AF_INET; //IPv4
srv.sin_port = htons(port); //Port ID
srv.sin_addr.s_addr=htonl(INADDR_ANY);
/************************
flag = inet_pton(AF_INET,desIP,&srv.sin_addr); //IP Address
if (flag == 0)
{
perror("invalid IP Address!!!\n");
return;
}
else if (flag==-1)
{
perror("af does contain a valid address family!!!\n");
return;
}
*************************/
bind(socket_fd,(struct sockaddr*)&srv,sizeof(srv));
listen(socket_fd,3); //wait and listen
while (1)
{
signal(SIGCHLD,sigfun);
connect_fd = accept(socket_fd,NULL,NULL);
pid_t pid = fork(); //creat the child process
if (pid == -1)
perror("process creat failed!\n");
else if (pid == 0)
{
char* netbuff = (char*) malloc(50*sizeof(char));
while (1)
{
bzero(netbuff,50);
flag = read(connect_fd,netbuff,50);
if (flag == 0)
break;
write(STDOUT_FILENO,netbuff,strlen(netbuff));
}
close(connect_fd);
free(netbuff);
exit(0);
}
else
continue;
}
return 0;
}
客户端程序
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<sys/stat.h>
#include<sys/ipc.h>
#include<sys/types.h>
#include<fcntl.h>
#include<errno.h>
#include<unistd.h>
#include<dirent.h>
#include<signal.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<poll.h>
#define port 4006
#define desIP "192.168.1.253"
int main(void)
{
int flag = 0;
int sockfd = socket(AF_INET,SOCK_STREAM,0); //creat a socket(TCP)
if (sockfd == -1)
{
perror("creat a socket failed!\n");
return;
}
struct sockaddr_in cli; //creat a address struct
bzero(&cli,sizeof(cli)); //initial
cli.sin_family = AF_INET; //IPv4
cli.sin_port = htons(port); //Port ID
flag = inet_pton(AF_INET,desIP,&cli.sin_addr); //set des IP Address
if (flag == 0)
{
perror("invalid IP Address!!!\n");
return;
}
else if (flag == -1)
{
perror("af does contain a valid address family!!!\n");
return;
}
connect(sockfd,(struct sockaddr*)&cli,sizeof(cli));
char* netbuff = (char*) malloc(50*sizeof(char));
while (1)
{
bzero(netbuff,50);
printf("you say:");
fgets(netbuff,50,stdin);
if (strncmp("quit",netbuff,4) == 0)
break;
write(sockfd,netbuff,strlen(netbuff));
}
close(sockfd);
free(netbuff);
return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)