Mail Archives: cygwin/2002/04/02/11:33:17
Some additional information about my problem :
cygwin 1.3.10 running on Windows NT 4.0.
Here follows a set of programs (client.c, server.c) that exhibit
the problem.
If you #define USE_SENDTO in client.c, the communication works.
I will also send a strace to Egor Duda.
Erik Devriendt
# ---------- makefile -------------
all: server client
client: client.c
gcc -o client client.c
server: server.c
gcc -o server server.c
# --------- end of makefile ------
/* ------- begin of server.c ------------ */
#include <errno.h>
#include <sys/types.h>
#include <sys/un.h>
#include <netinet/in.h>
#include <netdb.h>
#include <sys/socket.h>
#include <sys/fcntl.h>
#include <time.h>
int main(int argc, char *argv[])
{
struct sockaddr_un name;
int socket_id;
int s;
struct sockaddr saddr;
int saddrlen;
char buf[1024];
int result;
name.sun_family = AF_UNIX;
strcpy(name.sun_path, "./testsock");
if ((socket_id=socket(AF_UNIX, SOCK_DGRAM,0)) <0 )
{
printf("socket() gave errno = %d : %s\n", errno, strerror(errno));
exit(1);
}
if ((bind(socket_id,(struct sockaddr *)&name,sizeof(name))) <0)
{
printf("bind() gave errno = %d : %s\n", errno, strerror(errno));
exit(1);
}
printf("OK, socket_id = %d\n", socket_id);
result = read(socket_id, buf, sizeof(buf));
if(result > 0)
printf("read %d bytes : <%s>\n", result, buf);
return 0;
}
/* ------- end of server.c ------------ */
/* ------- begin of client.c ------------ */
#include <errno.h>
#include <sys/types.h>
#include <sys/un.h>
#include <netinet/in.h>
#include <netdb.h>
#include <sys/socket.h>
#include <sys/fcntl.h>
#include <time.h>
int main(int argc, char *argv[])
{
struct sockaddr_un name;
int socket_id, socket_id2;
char buf[100];
int sendresult;
name.sun_family = AF_UNIX;
strcpy(name.sun_path, "./testsock");
if ((socket_id=socket(AF_UNIX, SOCK_DGRAM,0)) <0 )
{
printf("socket() gave errno = %d : %s\n", errno, strerror(errno));
exit(1);
}
strcpy(buf, "hallo\n");
/* #define USE_SENDTO */
#ifdef USE_SENDTO
sendresult = sendto(socket_id, buf, strlen(buf)+1, 0, (struct sockaddr *)&name, sizeof(name) );
#else
if ( connect(socket_id, (struct sockaddr *)&name, sizeof(name)) < 0)
{
printf("connect() gave errno = %d : %s\n", errno, strerror(errno));
exit(1);
}
sendresult = write(socket_id, buf, strlen(buf)+1);
#endif
printf("sendresult = %d\n", sendresult);
if(sendresult < 0)
{
printf("sendto() gave errno = %d : %s\n", errno, strerror(errno));
exit(1);
}
printf("OK, socket_id = %d\n", socket_id);
return 0;
}
/* ------- begin of client.c ------------ */
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Bug reporting: http://cygwin.com/bugs.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
- Raw text -