【发布时间】:2013-11-24 16:28:52
【问题描述】:
Server Side:
void getMessage(int aSock){
int n=0;
char recvline[1025];
if ( (n = read(aSock, recvline, 1025) ) <0 ) {
perror("Erro: Nao recebida Mensagem do Servidor");
printf("%s",recvline);
}
}
.
.
. ( MAIN FUNCTION with all the sockets declarations etc( Its working )
for(;;){
clilen = sizeof(cli_addr);
mysock=accept(serverSocket,(struct sockaddr *) &cli_addr, &clilen);
if(mysock== -1) {
perror(" Falhou a Ligacao ");
}
else {
if ( (childpid = fork()) < 0 ) {
system ("clear");
printf("\t\tServidor: Erro");
exit(0);
}
else if ( childpid == 0 ) {
close(serverSocket);
getMessage(mysock);
exit(0);
}
}
close(mysock);
}
}
.
.
CLIENT SIDE
void socketSender(int idAcont, int aClientId,char aProdnome,int numRestock){
char buffer[1024];
int tamanho;
sprintf(buffer,"%d %d %c %d",idAcont,aClientId,aProdnome,numRestock);
int sockfd, servlen;
struct sockaddr_un serv_addr;
if ((sockfd= socket(AF_UNIX, SOCK_STREAM, 0)) < 0)
perror("erro ao criar socket cliente");
bzero((char *) &serv_addr, sizeof(serv_addr));
serv_addr.sun_family = AF_UNIX;
strcpy(serv_addr.sun_path, UNIXSTR_PATH);
servlen = strlen(serv_addr.sun_path) + sizeof(serv_addr.sun_family);
if (connect(sockfd, (struct sockaddr *) &serv_addr, servlen) < 0)
perror("erro ao fazer connect no cliente");
tamanho=strlen(buffer)+1;
if(write(sockfd,buffer,tamanho)!=tamanho)
perror("Erro ao escrever no cliente");
close(sockfd);
}
服务器端一直在等待 for(;;) 中的消息,它创建了应该使用 socketsender() 从客户端获取消息的 mysocket,但消息没有弹出:/ 有什么想法吗?提前谢谢你
【问题讨论】:
-
TCP 不是面向消息的,但提供了传输流数据的机制。
标签: c linux shell sockets unix