|
发表于 2005-1-13 16:48:26
|
显示全部楼层
有段代码,你参考一下
- #include <sys/socket.h> /* socket(), bind(), ... */
- #include <netinet/in.h> /* INADDR_ANY */
- #include <arpa/inet.h> /* inet_addr() */
- #include "socket_op.h"
- typedef int errcode_t;
- errcode_t socket_open(int *sockfd)
- {
- struct sockaddr_in local_addr;
- int local_fd;
- errcode_t retval = 0;
- /* socked creation */
- local_fd = socket(AF_INET, SOCK_DGRAM, 0);
- if (local_fd < 0) {
- fprintf(stderr, "can't open socket\n");
- retval = 1;
- goto returnval;
- }
- /* form LOCAL_addr AND bind server port */
- local_addr.sin_family = AF_INET;
- local_addr.sin_port = htons(LOCAL_SERVER_PORT);
- local_addr.sin_addr.s_addr= htonl(INADDR_ANY);
- memset(&(local_addr.sin_zero), '\0', 8);
- retval = bind(local_fd, (struct sockaddr *)&local_addr, sizeof(struct sockaddr));
- if (retval < 0) {
- fprintf(stderr, "can't bind port number: %d\n", LOCAL_SERVER_PORT);
- retval = 1;
- goto returnval;
- }
- printf("socket opened successfully on port:%d\n", LOCAL_SERVER_PORT);
- *sockfd = local_fd;
- returnval:
- return retval;
- }
- errcode_t socket_send(int sockfd, char *command)
- {
- struct sockaddr_in ssg_addr;
- int sended;
- errcode_t retval = 0;
-
- ssg_addr.sin_family = AF_INET;
- ssg_addr.sin_port = htons(SSG_SERVER_PORT);
- ssg_addr.sin_addr.s_addr = inet_addr(SSG_SERVER_IP);
- memset(&(ssg_addr.sin_zero), '\0', 8);
- sended = sendto(sockfd, command, strlen(command)+1, 0, (struct sockaddr *)&ssg_addr, sizeof(ssg_addr));
- if (sended < 0) {
- fprintf(stderr, "can't send command '%s' to %s:%d\n", command, SSG_SERVER_IP, SSG_SERVER_PORT);
- retval = 1;
- } else {
- printf("command '%s' sended to %s:%d successfully\n", command, SSG_SERVER_IP, SSG_SERVER_PORT);
- }
-
- return retval;
- }
- errcode_t socket_rcv(int sockfd, char *msg)
- {
- struct sockaddr_in cli_addr;
- int cli_len, received;
- errcode_t retval = 0;
-
- cli_len = sizeof(cli_addr);
- received= recvfrom(sockfd, msg, MAX_MSG, 0, (struct sockaddr *)&cli_addr, &cli_len);
- if (received < 0) {
- fprintf(stderr, "can't receive data\n");
- retval = 1;
- }
- return retval;
- }
复制代码 |
|