Skip to content

Commit eb15e01

Browse files
committed
no message
1 parent 74fecdb commit eb15e01

File tree

4 files changed

+145
-0
lines changed

4 files changed

+145
-0
lines changed

socket_client.c

+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
#include <stdio.h>
2+
#include <stdlib.h>
3+
#include <string.h>
4+
#include <errno.h>
5+
#include <sys/types.h>
6+
#include <sys/socket.h>
7+
#include <netinet/in.h>
8+
9+
#define MAXLINE 4096
10+
11+
int main(int argc, char **argv)
12+
{
13+
int sockfd, n;
14+
char recvline[4096], sendline[4096];
15+
struct sockaddr_in servaddr;
16+
17+
if (2 != argc) {
18+
printf("usage: ./client <ipaddress>\n");
19+
exit(0);
20+
}
21+
22+
if (0 > (sockfd = socket(AF_INET, SOCK_STREAM, 0))) {
23+
printf("create socket error: %s(errno: %d)\n", strerror(errno), errno);
24+
exit(0);
25+
}
26+
27+
memset(&servaddr, 0, sizeof(servaddr));
28+
servaddr.sin_family = AF_INET;
29+
servaddr.sin_port = htons(6666);
30+
if (0 >= inet_pton(AF_INET, *(argv+1), &servaddr.sin_addr)) {
31+
printf("connect error: %s(errno: %d)\n", strerror(errno), errno);
32+
exit(0);
33+
}
34+
35+
printf("send msg to server\n");
36+
fgets(sendline, 4096, stdin);
37+
if (0 > send(sockfd, sendline, strlen(sendline), 0)) {
38+
printf("send msg error: %s(errno: %d)\n", strerror(errno), errno);
39+
exit(0);
40+
}
41+
42+
close(sockfd);
43+
exit(0);
44+
}

socket_server.c

+58
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
#include <stdio.h>
2+
#include <stdlib.h>
3+
#include <string.h>
4+
#include <errno.h>
5+
#include <sys/types.h>
6+
#include <sys/socket.h>
7+
#include <netinet/in.h>
8+
9+
#define MAXLINE 4096
10+
11+
int main(int argc, char ** argv)
12+
{
13+
int listenfd, connfd;
14+
struct sockaddr_in servaddr;
15+
char buff[4096];
16+
int n;
17+
18+
if (-1 == (listenfd = socket(AF_INET, SOCK_STREAM, 0))) {
19+
printf("create socket error: %s(errno: %d)\n", strerror(errno), errno);
20+
exit(0);
21+
}
22+
23+
memset(&servaddr, 0, sizeof(servaddr));
24+
servaddr.sin_family = AF_INET;
25+
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
26+
servaddr.sin_port = htons(8888);
27+
28+
if (-1 == (bind(listenfd, (struct sockaddr*)&servaddr, sizeof(servaddr)))) {
29+
printf("bind socket error: %s(errno: %d)\n", strerror(errno), errno);
30+
exit(0);
31+
}
32+
33+
if (-1 == (listen(listenfd, 10))) {
34+
printf("listen socket error: %s(errno: %d)\n", strerror(errno), errno);
35+
exit(0);
36+
}
37+
38+
printf("=====waiting for client's request=====\n");
39+
while (1) {
40+
if (-1 == (connfd = accept(listenfd, (struct sockaddr *)NULL, NULL))) {
41+
printf("accept socket error: %s(errno: %d)\n", strerror(errno), errno);
42+
continue;
43+
}
44+
45+
n = recv(connfd, buff, MAXLINE, 0);
46+
buff[n] = '\0';
47+
printf("recv msg from client: %s\n", buff);
48+
49+
char *header = "HTTP/1.1 200 OK\r\nContent-type: text/html\r\nServer-name:WenJun1055\r\n\r\n";
50+
char *body = "Hello World";
51+
write(connfd, header, strlen(header));
52+
write(connfd, body, strlen(body));
53+
54+
close(connfd);
55+
}
56+
57+
close(listenfd);
58+
}

stack/stack.c

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#include "stack.h"
2+
3+
int stack_init(stack_info *stack)
4+
{
5+
stack->top = 0;
6+
stack->max = 0
7+
stack->element = NULL;
8+
return SUCCESS;
9+
}
10+
11+
int stack_push(stack_base *stack, const void *element, int size)
12+
{
13+
if (stack->top >= stack->max) {
14+
stack->elements = (void **)realloc(stack->elements, (sizeof(void **) * (stack->max += STACK_BLOCK_SIZE) ));
15+
}
16+
}

stack/stack.h

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#include <stdio.h>
2+
#include <stdlib.h>
3+
4+
typedef struct _stack {
5+
int top;
6+
int max;
7+
void **elements;
8+
} stack_base;
9+
10+
11+
#define SUCCESS 0
12+
#define FAILURE -1
13+
#define STACK_BLOCK_SIZE 64
14+
#define ZEND_STACK_APPLY_TOPDOWN 1
15+
#define ZEND_STACK_APPLY_BOTTOMUP 2
16+
17+
int stack_init(stack_base *stack);
18+
int stack_push(stack_base *stack, const void *element, int size);
19+
int stack_top(const stack_base *stack, void **element);
20+
int stack_del_top(stack_base *stack);
21+
int stack_int_top(const stack_base *stack);
22+
int stack_is_empty(const stack_base *stack);
23+
int stack_destroy(stack_base *stack);
24+
void **stack_base(const stack_base *stack);
25+
int stack_count(const stack_base *stack);
26+
void stack_apply(stack_base *stack, int type, int (*apply_function)(void *element));
27+
void stack_apply_with_argument(stack_base *stack, int type, int (*apply_function)(void *element, void *arg), void *arg);

0 commit comments

Comments
 (0)