当前位置:网站首页>Server socket program
Server socket program
2022-06-21 17:57:00 【Marathon】
socket It's a kind of IPC Method , This article implements a simple server routine , Used to understand socket Application framework .
socket Function to create a socket .
bind The function is used to allocate ip Address and port number .
listen Function to turn the socket into a connection ready state .
accept Function accepts the connection request . If you call this function without a connection , Will not return , Until there is a connection request .
connect Function to send a connection request to the server .
windows End writing socket, Need to call ws2_32.lib Kuhe WSAStartup function .
WSADATA ws; // Initialize dynamic link library
WSAStartup(MAKEWORD(2,2), &ws);// The main version is 2, The sub version is 2
Functions can be used in the linux The input man see , Or read related books .
#include <string.h>
#include <stdlib.h>
#ifdef WIN32//Windows Compile... In environment
#include <Windows.h>
#else//linux Compile... In environment
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#include <arpa/inet.h>
#define closesocket close //linux Use in close function
#endif
#include <stdio.h>
int main(int argc, char *argv[])
{
#ifdef WIN32
WSADATA ws; // Initialize dynamic link library
WSAStartup(MAKEWORD(2,2), &ws);// The main version is 2, The sub version is 2
#endif
int sock = socket(AF_INET, SOCK_STREAM, 0);//TCP
if (sock == -1) {
printf("create socket failed!\n");
return -1;
}
unsigned short port = 8080;
if (argc > 1) {
port = atoi(argv[1]);// Convert a string to an integer
}
sockaddr_in saddr;
saddr.sin_family = AF_INET;
saddr.sin_port = htons(port);// Note byte order conversion
saddr.sin_addr.s_addr = htonl(0);
if (bind(sock, (sockaddr*)&saddr, sizeof(saddr)) != 0) {
printf("bind port %d failed!\n", port);
return -2;
}
printf("bind port %d success!\n", port);
listen(sock, 10);
sockaddr_in caddr;
socklen_t len = sizeof(caddr);
int client = accept(sock, (sockaddr*)&caddr, &len);
printf("accept client %d\n", client);
char *ip = inet_ntoa(caddr.sin_addr);
unsigned short cport = ntohs(caddr.sin_port);
printf("client ip is %s,port is %d\n", ip, cport);
char buf[1024] = {
0 };
for (;;)
{
int recvlen = recv(client, buf, sizeof(buf) - 1, 0);
if (recvlen <= 0) break;
buf[recvlen] = '\0';
if (strstr(buf, "quit") != NULL) {
char re[] = "quit success!\n";
send(client, re, strlen(re) + 1, 0);//strlen The obtained string size does not include \0
break;
}
send(client, "ok\n", 4, 0);
printf("recv %s\n", buf);
}
closesocket(client);
closesocket(sock);
getchar();
return 0;
}
stay linux Compile tests in , Input “quit” sign out , Use telnet Tools .
边栏推荐
猜你喜欢

Nacos注册中心-----从0开始搭建和使用

The way for programmers to learn

智慧三农数字王宁:适合初学者的前5日交易秘诀

STM32F1与STM32CubeIDE编程实例-线性霍尔效应传感器驱动

Are the two flame retardant standards of European furniture en 597-1 and en 597-2 the same?

天天在都在谈的S3协议到底是什么?一文带你了解S3背后的故事
![[Oracle] is there a](/img/21/3c481be79a4f19b06a2a93ded4159f.png)
[Oracle] is there a "time" data type in oracle-- Research on Oracle data types

Volcano engine + Yanrong yrcloudfile, driving new growth of data storage

ViT杀疯了,10+视觉Transformer模型详解

Accelerate the implementation of cloud native applications, and Yanrong yrcloudfile and Tianyi cloud have completed the Compatibility Certification
随机推荐
Postman association to complete interface automation test
拦截器实现网页用户登陆
Vscade tool
一招教你通过焱融 SaaS 数据服务平台+ELK 让日志帮你做决策
Live broadcast platform development, live broadcast of each category and single example design display
List set to comma concatenated string
Yrcloudfile of Yanrong technology has completed the compatibility certification with ANTP to jointly create a new blueprint for storage
The source code of the online live broadcast system enables you to request the list interface and touch the bottom page to load
Performance test ---locust's on_ Start and on_ Stop method
Stm32f1 and stm32subeide programming example - linear Hall effect sensor driver
Convert longitude and latitude to distance
C语言与Lua的交互(实践三)
Jetpack compose phase
What is the difference between IEC62133 and EN62133? Which items are mainly tested?
Not graduated from a first-class university, but passed the self-study software test and entered the initial 22K annual salary of Alibaba
ViT杀疯了,10+视觉Transformer模型详解
Interceptor to realize web user login
regular expression
PTA l3-031 thousand hand Guanyin (30 points)
堆栈认知——栈溢出实例(ret2libc)