我想在linux上修改這個c程序。Linux C定義緩衝區
此時此程序要求用戶輸入,然後將該輸入發送到服務器。
現在,我不想那樣。我希望服務器的輸入來自file.txt。
如果文件每行包含一個字,並且文件中的每一行都將作爲緩衝區發送到服務器。
例names.txt中:
john
jane
doe
實施例緩衝器:
GET /cast/api.php?name=john
GET /cast/api.php?name=jane
GET /cast/api.php?name=doe
每個名稱將被髮送到服務器,當客戶端到達文件的結尾,並已發送的所有的那些數據到服務器然後它會結束。
問題是我有點不知所措,它是我第一次用C編寫Linux代碼。
現在我只是想編碼如何設置緩衝區而不是用戶輸入。
一旦我能夠做到這一點。然後,我會嘗試編碼以從文件中獲取緩衝區。
這是我的代碼:
int sockfd, portno, n;
struct sockaddr_in serv_addr;
struct hostent *server;
char buffer[256];
char buffer2[256];
portno = 80;
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0)
error("ERROR opening socket");
server = gethostbyname("api.domain.com");
if (server == NULL) {
fprintf(stderr,"ERROR, no such host\n");
exit(0);
}
bzero((char *) &serv_addr, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
bcopy((char *)server->h_addr,
(char *)&serv_addr.sin_addr.s_addr,
server->h_length);
serv_addr.sin_port = htons(portno);
if (connect(sockfd,(struct sockaddr *) &serv_addr,sizeof(serv_addr)) < 0)
error("ERROR connecting");
printf("1");
printf("Please enter the message: ");
//this gives me 'err: incompatible types in assignment'
buffer = "somename";
printf("2");
bzero(buffer,256);
//fgets(buffer,255,stdin);
sprintf(buffer2, "GET /cast/api.php?name=%s", buffer);
n = write(sockfd,buffer2,strlen(buffer2));
if (n < 0)
error("ERROR writing to socket");
bzero(buffer,256);
n = read(sockfd,buffer,255);
if (n < 0)
error("ERROR reading from socket");
printf("%s\n",buffer);
close(sockfd);
return 0;
const char * buffer =「我的硬編碼緩衝區」; ? – simonc