123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223 |
- #include "includes.h"
- #include "lwip/timers.h"
- #include "lwip/tcp.h"
- #include "lwip/sockets.h"
- #include "string.h"
- #define SERVER_PORT 30000
- #define SERVER_IP "192.168.0.104"
- void socket_client(void)
- {
- int sock = -1;
- struct sockaddr_in serverAddr;
- uint8_t send_buf[] = "This is a TCP client test ... \n";
-
-
- while(1)
- {
- sock = socket(AF_INET, SOCK_STREAM, 0);
- if(sock < 0)
- {
- OSTimeDly(100);
- continue;
- }
-
- serverAddr.sin_family = AF_INET;
- serverAddr.sin_port = htons(SERVER_PORT);
- serverAddr.sin_addr.s_addr = inet_addr(SERVER_IP);
- memset(&(serverAddr.sin_zero), 0, sizeof(serverAddr.sin_zero));
-
- if( connect(sock, (struct sockaddr*)&serverAddr, sizeof(struct sockaddr) )!= ERR_OK)
- {
- closesocket(sock);
- OSTimeDly(1000);
- continue;
- }
-
- while(1)
- {
- if(write(sock, send_buf, sizeof(send_buf)) < 0) break;
- OSTimeDly(2000);
- }
-
- closesocket(sock);
- }
- }
- uint8_t recvdata[256];
- void sock_tcpServer(void)
- {
- int sock = -1;
- int connected = -1;
-
- struct sockaddr_in server_addr, client_addr;
- socklen_t sin_size;
- int recv_data_len;
-
- sock = socket(AF_INET, SOCK_STREAM, 0);
- if(sock < 0) goto __exit;
-
- server_addr.sin_family = AF_INET;
- server_addr.sin_addr.s_addr = INADDR_ANY;
- server_addr.sin_port = htons(SERVER_PORT);
- memset(&(server_addr.sin_zero), 0, sizeof(server_addr.sin_zero));
- if(bind(sock, (struct sockaddr *)&server_addr, sizeof(struct sockaddr)) == -1) goto __exit;
-
- if(listen(sock, 5) == -1) goto __exit;
-
- while(1)
- {
- sin_size = sizeof(struct sockaddr_in);
- connected = accept(sock, (struct sockaddr *)&client_addr, &sin_size);
- printf("new client connected from(%s, %d) \n", inet_ntoa(client_addr.sin_addr), ntohs(client_addr.sin_port));
-
- while(1)
- {
- memset(recvdata, 0, 256);
- recv_data_len = recv(connected, recvdata, 256, 0);
- if(recv_data_len <= 0) break;
- printf("recv a data: %s \n", (char *)recvdata);
- write(connected, recvdata, recv_data_len);
- }
- if(connected > 0) closesocket(connected);
- connected = -1;
- }
-
- __exit:
- if(sock >= 0) closesocket(sock);
- }
|