该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
/*made by ebhrz*/
#include
#include
#include
#include
#include
#include
#include
/*---------global define---------*/
int cfd; /* 文件描述符 */
int recbytes;
int sin_size;
char buffer[1024] = { 0 }; /* 接受缓冲区 */
struct sockaddr_in s_add, c_add; /* ip、端口 */
unsigned short portnum = 1234;//端口可自己修改
char msg[1024];
/*-----------global define end-----*/
int set_link()
{
cfd = socket(AF_INET, SOCK_STREAM, 0);
if (-1 == cfd)
{
printf("socket fail ! \r\n");
return -1;
}
printf("socket ok !\r\n");
bzero(&s_add, sizeof(struct sockaddr_in));
s_add.sin_family = AF_INET;
s_add.sin_addr.s_addr = inet_addr("127.0.0.1"); /* ip转换为4字节整形,使用时自己修改 */
s_add.sin_port = htons(portnum);
if (-1 ==
connect(cfd, (struct sockaddr *)(&s_add), sizeof(struct sockaddr)))
{
printf("connect fail !\n");
return -1;
}
return 1;
}
int rec()
{
if (-1 == (recbytes = read(cfd, buffer, 1024)))
{
printf("read data fail !\n");
return -1;
}
printf("%s\n", buffer);
if(strcmp(buffer,"bye bye")==1)
exit(0);
memset(buffer,0,1024);
}
int snd()
{
scanf("%[^\n]", msg);
if (-1 == write(cfd, msg, 32))
{
printf("write fail!\n");
return -1;
}
memset(msg, 0, 1024);
getchar();//接收遗留\n
}
int main()
{
printf("Hello,welcome to client !\n");
pid_t pid;
if (set_link() != 1)
{
printf("sth wrong");
return -1;
}
pid = fork();
if (pid <0)
perror("fork error");
else if (pid > 0)
{
while (1)
rec();
close(cfd);
}
else
{
while (1)
snd();
close(cfd);
}
return 0;
}
/*made by ebhrz*/
#include
#include
#include
#include
#include
#include
#include
/*---------global define---------*/
int sfp, nfp;// 文件描述符
int recbytes;
int sin_size;
char buffer[1024] &#61; { 0 };//接受缓冲区
struct sockaddr_in s_add, c_add; //ip、端口
unsigned short s_portnum &#61; 1234;
char msg[1024];
/*-----------global define end-----*/
int set_link()
{
sfp &#61; socket(AF_INET, SOCK_STREAM, 0);
if (-1 &#61;&#61; sfp)
{
printf("socket fail ! \n");
return -1;
}
printf("socket ok !\n");
bzero(&c_add, sizeof(struct sockaddr_in));
s_add.sin_family &#61; AF_INET;
s_add.sin_addr.s_addr &#61; htonl(INADDR_ANY);//ip不定
s_add.sin_port &#61; htons(s_portnum);
if (-1 &#61;&#61; bind(sfp, (struct sockaddr *)(&s_add), sizeof(struct sockaddr)))
{
printf("bind fail !\r\n");
return -1;
}
printf("bind ok !\r\n");
sin_size &#61; sizeof(struct sockaddr_in);
return 1;
}
int rec()
{
if (-1 &#61;&#61; (recbytes &#61; read(nfp, buffer, 1024)))
{
printf("read data fail !\n");
return -1;
}
printf("%s\n", buffer);
if(strcmp(buffer,"bye bye")&#61;&#61;1)
exit(0);
memset(buffer,0,1024);
}
int snd()
{
scanf("%[^\n]", msg);
printf("%s", msg);
if (-1 &#61;&#61; write(nfp, msg, 32))
{
printf("write fail!\n");
return -1;
}
memset(msg, 0, 1024);
getchar();
}
int main()
{
printf("Hello,welcome to service !\n");
pid_t pid;
if (set_link() !&#61; 1)
{
printf("sth wrong");
return -1;
}
if (-1 &#61;&#61; listen(sfp, 5))
{
printf("listen fail !\n");
return -1;
}
nfp &#61; accept(sfp, (struct sockaddr *)(&c_add), &sin_size);
if (-1 &#61;&#61; nfp)
{
printf("accept fail !\n");
return -1;
}
pid &#61; fork();
if (pid <0)
perror("fork error");
else if (pid > 0)
{
while (1)
snd();
close(nfp);
close(sfp);
}
else
{
while (1)
rec();
close(nfp);
close(sfp);
}
return 0;
}