學校剛學習socket網路編程。我架設了一個服務器想達到互相發送資訊的效果。這是我的代碼
服務器端:
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <string.h>
#define SERV_PORT 8000 //埠宏定義
int main(void)
{
FILE *fp;
int lfd, cfd, len;
struct sockaddr_in serv_addr, clin_addr;
socklen_t clin_len;
char buf[1024];
char msg[1024];
memset(msg, 0, 1024);
memset(buf, 0, 1024);
//AF_INET: ipv4 SOCK_STREAM:stream協議 0: tcp
lfd = socket(AF_INET, SOCK_STREAM, 0);
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = htonl(INADDR_ANY); //host to net long
serv_addr.sin_port = htons(SERV_PORT);//host to net short 網路序 : 大端存盤
// ip + port
bind(lfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr));
listen(lfd, 128);
clin_len = sizeof(clin_addr);
cfd = accept(lfd, (struct sockaddr*)&clin_addr, &clin_len);
strcpy(buf, "Fred's server");
write(cfd, buf, sizeof(buf)+1);
do{
memset(buf, 0, 999);
len = read(cfd, buf, sizeof(buf));
//標準輸出
//write(STDOUT_FILENO, buf, len);
printf("Receive: %s\n",buf);
printf("please input msg you want to send\n");
scanf("%[^\n]s", msg);
write(cfd, msg, sizeof(msg)+1);
}while(1);
return 0;
}
客戶端:
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/in.h>
int main(void)
{
int sockfd;
char sendline[100];
struct sockaddr_in serveaddr;
sockfd = socket(AF_INET, SOCK_STREAM, 0);
bzero(&serveaddr, sizeof(serveaddr));
serveaddr.sin_family = AF_INET;
serveaddr.sin_port = htons(8000);
inet_pton(AF_INET, "192.168.2.10", &(serveaddr.sin_addr));
connect(sockfd, (struct sockaddr*)&serveaddr, sizeof(serveaddr));
do{
memset(sendline, 0, 100);
read(sockfd, sendline, sizeof(sendline));
printf("%s\n", sendline);
memset(sendline, 0, 100);
printf("please input msg you want to send\n");
scanf("%[^\n]s", sendline);
write(sockfd, sendline, strlen(sendline)+1);
}while(1);
}
結果剛一連接還好,然后輸入一行周后就開始無限回圈了。
我只想實作這邊發送一條然后另一端收到后可以回一條,就是等待接收到對方發送的資訊后再開始發送資訊,不知道該怎么做

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/145323.html
標籤:網絡通信
