|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
1、 tcp程序设计
9 P- `. ?4 A- R' s' y( @) s( P+ Y" E# i+ L( R3 Z
代码1 server:0 i. h! C( s- @' K
2 z$ S0 {$ {5 p" N
- #include <stdlib.h>
- #include <stdio.h>
- #include <errno.h>
- #include <string.h>
- #include <netdb.h>
- #include <sys/types.h>
- #include <netinet/in.h>
- #include <sys/socket.h>
- #define portnumber 3333
- int main(int argc, char *argv[])
- {
- int sockfd, new_fd;
- struct sockaddr_in server_addr;
- struct sockaddr_in client_addr;
- int sin_size;
- int nbytes;
- char buffer[1024];
- //AF_INET: IPV4, SOCK_STREAM: TCP
- if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
- {
- fprintf(stderr, "Socket error:%s\n\a", strerror(errno));
- exit(1);
- }
- bzero(&server_addr, sizeof(struct sockaddr_in));
- server_addr.sin_family = AF_INET;
- server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
- server_addr.sin_port = htons(portnumber);
- if(bind(sockfd, (struct sockaddr *) (&server_addr), sizeof(structsockaddr)) == -1)
- {
- fprintf(stderr, "Bind error: %s\n\a", strerror(errno));
- exit(1);
- }
- if(listen(sockfd, 5) == -1)
- {
- fprintf(stderr, "Listen error: %s\n\a", strerror(errno));
- exit(1);
- }
- while(1)
- {
- sin_size = sizeof(struct sockaddr_in);
- if((new_fd = accept(sockfd, (struct sockaddr *)(&client_addr),&sin_size)) == -1)
- {
- fprintf(stderr, "Accept error:%s\n\a", strerror(errno));
- exit(1);
- }
- fprintf(stderr, "Server get connection from %s\n",(char*)inet_ntoa(client_addr.sin_addr));
- if((nbytes = read(new_fd, buffer, 1024)) == -1)
- {
- fprintf(stderr, "Read Error: %s\n", strerror(errno));
- exit(1);
- }
- buffer[nbytes] = '\0';
- printf("Server received %s\n", buffer);
- close(new_fd);
- }
- close(sockfd);
- return 0;
- }
5 N @$ B5 g0 H " y* m, e7 m0 w4 |8 p0 r
% }1 z1 D$ }$ R& j% h
& s* b+ Z+ d; m! o( a1 N7 B0 a( _7 K代码2 client:; ^7 G+ P. m$ K- m/ V6 q
; ~4 Z8 d) F* A* T6 R+ R: }% q- #include <stdlib.h>
- #include <stdio.h>
- #include <errno.h>
- #include <string.h>
- #include <netdb.h>
- #include <sys/types.h>
- #include <netinet/in.h>
- #include <sys/socket.h>
- #define portnumber 3333
- int main(int argc, char *argv[])
- {
- int sockfd;
- char buffer[1024];
- struct sockaddr_in server_addr;
- struct hostent *host;
- if(argc != 2)
- {
- fprintf(stderr, "Usage: %s hostname \a\n", argv[0]);
- exit(1);
- }
- if((host = gethostbyname(argv[1])) == NULL)
- {
- fprintf(stderr, "Gethostname Error:%s\a\n", strerror(errno));
- exit(1);
- }
- if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
- {
- fprintf(stderr, "Socket Error: %s\a\n", strerror(errno));
- exit(1);
- }
- bzero(&server_addr, sizeof(server_addr));
- server_addr.sin_family = AF_INET;
- server_addr.sin_port = htons(portnumber);
- server_addr.sin_addr = *((struct in_addr *) host->h_addr);
- if(connect(sockfd, (struct sockaddr *)(&server_addr), sizeof(struct sockaddr))== -1)
- {
- fprintf(stderr, "Connect Error: %s\a\n", strerror(errno));
- exit(1);
- }
- printf("Please input char: \n");
- fgets(buffer, 1024, stdin);
- write(sockfd, buffer, strlen(buffer));
- close(sockfd);
- return 0;
- }
R, d" B* s& J" ^8 l; F 2 O7 C: D5 H" z$ J* N5 x! @ o
8 J# f) Q9 ]# \/ i- i
$ |% r; Z0 K. ^8 o2 O+ Y9 a3 L, Z
Makefile:
1 p4 s7 I7 i. E( V% t- l) D4 k) P4 J
- CC = gcc
- CURTDIR = $(shell pwd)
- TARGET = tcp_client
- #TARGET = tcp_server
- %.o:%.c
- $(CC)-c $(EXTRAFLAGS) $< -o $@
- %.o:%.S
- $(CC)-c $(EXTRAFLAGS) $< -o $@
- .PHONY: all clean
- $(TARGET): $(TARGET).o
- $(CC) -o $@ $^
- clean:
- rm-RF $(TARGET) $(TARGET).o
3 x" k& H$ F8 s* M3 Z( k
' x: c- e- E P2 H. L9 ]+ `8 G1 @
. y) I7 h! J* x/ F5 b% ]4 @9 g! Z( k# |6 V& |5 o! C
运行结果:
, A6 A6 L5 e$ W7 d4 n& |& l& d7 u6 M3 T& @! z' d" v
9 m1 B1 a- m7 j- X [" N6 k3 V9 e- f% b
8 a5 Z. ?- t" I$ i8 Q! j1 q3 |
' @" b9 p0 U6 d: T R; }/ Z |
|