version 1.2, 2000/01/16 07:55:48 |
version 1.3, 2001/05/04 01:06:30 |
|
|
/* $OpenXM$ */ |
/* $OpenXM: OpenXM/src/kan96xx/plugin/sm1Socket.c,v 1.2 2000/01/16 07:55:48 takayama Exp $ */ |
/* msg0s.c */ |
/* msg0s.c */ |
#include <stdio.h> |
#include <stdio.h> |
#include <sys/types.h> |
#include <sys/types.h> |
Line 58 struct object KsocketOpen(struct object obj) { |
|
Line 58 struct object KsocketOpen(struct object obj) { |
|
me.sin_family = AF_INET; |
me.sin_family = AF_INET; |
me.sin_port = htons(portNumber); |
me.sin_port = htons(portNumber); |
bcopy(myhost->h_addr, |
bcopy(myhost->h_addr, |
&me.sin_addr,myhost->h_length); |
&me.sin_addr,myhost->h_length); |
|
|
if ((s_waiting = socket(AF_INET,SOCK_STREAM,0)) < 0) { |
if ((s_waiting = socket(AF_INET,SOCK_STREAM,0)) < 0) { |
errorMsg1s("Socket allocation is failed."); |
errorMsg1s("Socket allocation is failed."); |
Line 82 struct object KsocketOpen(struct object obj) { |
|
Line 82 struct object KsocketOpen(struct object obj) { |
|
errorMsg1s("Listen failed"); |
errorMsg1s("Listen failed"); |
} |
} |
/* |
/* |
fprintf(stderr,"Done the initialization. port =%d\n",ntohs(me.sin_port)); |
fprintf(stderr,"Done the initialization. port =%d\n",ntohs(me.sin_port)); |
fprintf(stderr,"socket id = %d",accept(s_waiting,NULL,NULL)); */ |
fprintf(stderr,"socket id = %d",accept(s_waiting,NULL,NULL)); */ |
rob = newObjectArray(2); |
rob = newObjectArray(2); |
putoa(rob,0,KpoInteger(s_waiting)); |
putoa(rob,0,KpoInteger(s_waiting)); |
putoa(rob,1,KpoInteger(ntohs(me.sin_port))); |
putoa(rob,1,KpoInteger(ntohs(me.sin_port))); |
Line 132 struct object KsocketConnect(struct object obj) { |
|
Line 132 struct object KsocketConnect(struct object obj) { |
|
server.sin_family = AF_INET; |
server.sin_family = AF_INET; |
server.sin_port = htons(portNumber); |
server.sin_port = htons(portNumber); |
bcopy(servhost->h_addr, |
bcopy(servhost->h_addr, |
(char *)&server.sin_addr,servhost->h_length); |
(char *)&server.sin_addr,servhost->h_length); |
|
|
if ((socketid = socket(AF_INET,SOCK_STREAM,0)) <0) { |
if ((socketid = socket(AF_INET,SOCK_STREAM,0)) <0) { |
errorMsg1s("socket allocation is failed.\n"); |
errorMsg1s("socket allocation is failed.\n"); |
Line 237 struct object KsocketSelect(struct object obj) { |
|
Line 237 struct object KsocketSelect(struct object obj) { |
|
} |
} |
|
|
struct object KsocketSelectMulti(struct object obj) |
struct object KsocketSelectMulti(struct object obj) |
/* [ [integer socketid1, integer socketid2, ...] |
/* [ [integer socketid1, integer socketid2, ...] |
optional integer timeout default 0] |
optional integer timeout default 0] |
[ result1, result2, ....] |
[ result1, result2, ....] |
*/ |
*/ |
Line 350 struct object KsocketRead(struct object obj) { |
|
Line 350 struct object KsocketRead(struct object obj) { |
|
if (datasize - totalsize > 0) { |
if (datasize - totalsize > 0) { |
n = read(socketid,data+totalsize,datasize-totalsize); |
n = read(socketid,data+totalsize,datasize-totalsize); |
if (n < 0) { |
if (n < 0) { |
errorMsg1s("Read error."); |
errorMsg1s("Read error."); |
} |
} |
if (n < datasize-totalsize) { |
if (n < datasize-totalsize) { |
totalsize += n; |
totalsize += n; |
break; |
break; |
}else{ totalsize += n; } |
}else{ totalsize += n; } |
if (totalsize == 0) { |
if (totalsize == 0) { |
errorMsg1s("Select returns 1, but there is no data to read."); |
errorMsg1s("Select returns 1, but there is no data to read."); |
} |
} |
}else { /* increase the datasize */ |
}else { /* increase the datasize */ |
tmp = (char *)GC_malloc(sizeof(char)*2*datasize); |
tmp = (char *)GC_malloc(sizeof(char)*2*datasize); |