Skip to content

Commit 9c60d11

Browse files
author
Anton Yarkov
committed
Examples of simple sync tcp server and client.
1 parent 4844283 commit 9c60d11

File tree

2 files changed

+59
-0
lines changed

2 files changed

+59
-0
lines changed
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#include <stdio.h>
2+
#include <sys/types.h>
3+
#include <sys/socket.h>
4+
#include <netinet/in.h>
5+
#include <unistd.h>
6+
7+
int main(int argc, char **argv)
8+
{
9+
int Socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
10+
11+
struct sockaddr_in SockAddr;
12+
SockAddr.sin_family = AF_INET;
13+
SockAddr.sin_port = htons(12345);
14+
SockAddr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
15+
16+
connect(Socket, (struct sockaddr *)(&SockAddr), sizeof(SockAddr));
17+
18+
char Buffer[] = "PING";
19+
send(Socket, Buffer, 4, MSG_NOSIGNAL);
20+
recv(Socket, Buffer, 4, MSG_NOSIGNAL);
21+
22+
shutdown(Socket, SHUT_RDWR);
23+
close(Socket);
24+
25+
printf("%c\n", Buffer);
26+
27+
return 0;
28+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
#include <stdio.h>
2+
#include <sys/types.h>
3+
#include <sys/socket.h>
4+
#include <netinet/in.h>
5+
#include <unistd.h>
6+
7+
int main(int argc, char **argv)
8+
{
9+
int MasterSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
10+
11+
struct sockaddr_in SockAddr;
12+
SockAddr.sin_family = AF_INET;
13+
SockAddr.sin_port = htons(12345);
14+
SockAddr.sin_addr.s_addr = htonl(INADDR_ANY); // 0.0.0.0
15+
16+
bind(MasterSocket, (struct sockaddr *)(&SockAddr), sizeof(SockAddr));
17+
18+
listen(MasterSocket, SOMAXCONN);
19+
20+
while (1)
21+
{
22+
int SlaveSocket = accept(MasterSocket, 0, 0);
23+
int Buffer[5] = { 0, 0, 0, 0, 0 };
24+
recv(SlaveSocket, Buffer, 4, MSG_NOSIGNAL);
25+
shutdown(SlaveSocket, SHUT_RDWR);
26+
close(SlaveSocket);
27+
printf("%s\n", Buffer);
28+
}
29+
30+
return 0;
31+
}

0 commit comments

Comments
 (0)