[Suzaku:00248] Still system crashes
Eike Suthau
email@hidden
2005年 2月 22日 (火) 02:16:35 JST
すみません、も一度リードのアイケです、
私は前のメールのmallocの方法をしましたけど何分後にcrashをします。
今理があんまり分かりません。
私はnon-blocking IOが必要ですから手伝って下さい。
以下にソースが書いています。PCの方にテストのために”nc -l -p 7000”をしました。
パソコンにプログラムが完璧にできますけど。
よろしく
==============================================
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include "measif.h"
int client_connect(char * server,int port){
int client_socket, longueur;
struct sockaddr_in address;
client_socket = socket(AF_INET,SOCK_STREAM,0);
if (client_socket == -1){
fprintf (stderr, "\n\nERROR: Can not create socket - %s\n\n",
strerror(errno));
return -1;
}
address.sin_family = AF_INET;
address.sin_port = htons(port);
inet_pton(AF_INET,server,&address.sin_addr);
longueur=connect(client_socket,(struct sockaddr
*)&address,sizeof(address));
if (longueur!=0){
printf("Error connecting to server. %s\n",strerror(errno));
return -1;
}
fcntl( client_socket, F_SETFL, O_NONBLOCK); //make socket non-blocking
return client_socket;
}
int main(int argc, char *argv[])
{
int sock, nbytes,i=0;
char buffchar=0, *command, *buffer;
command=malloc(1024);
buffer=malloc(1024);
sock=client_connect("172.16.50.130",7000);
if (sock==-1) return 1;
while(1){
nbytes=read(sock,&buffchar,1);
if (nbytes==1) command[i++]=buffchar;
else if (errno!=EAGAIN) return 1;
if (buffchar=='\n') {
command[i]=0;
sprintf(buffer,"\nBytes available: %s\n",command);
write(sock, command, strlen(command));
buffchar=0;
i=0;
}
if (command[0]=='q') return 0; //exit on encountering "q"
}
return 0;
}
==============================================
suzaku メーリングリストの案内