Socket初探
更新日期:
程序猿的第二天性真是个神奇的东西,做久了客户端,就开始好奇服务端
正巧最近在负责的项目需要更为了解一些服务端的内容。
正巧最近身体不好在家休养,有大把的时间可以挥霍!
于是,我就开始尝试着去接触Socket了!想想就令人激动,探索未知的区域啊!
以前接触的项目要么就是前人封装好的模块,协议通常使用protobuffer。
虽然顺着代码一路F12了解了很多客户端的逻辑。但是总有一种别人定下了规则,你只要按着规则做就好的感觉。
收消息发消息,最多就是模块化,封装起来。虽然上学时学过什么3次握手,TCP,UDP,现在都已经还给老师了。
本着刨根问底的思想,我还是去从最开始的Hello World一点一点地搞起来
先上一张图,图是盗来的
Server
1.创建一个socket
2.bind
3.listen
4.accept
5.write/read
6.close
伪代码1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
struct sockaddr_in s_in;
int l_fd;
l_fd = socket(AF_INET,SOCK_STREAM,0);
bind(l_fd,(struct sockaddr *)&s_in,sizeof(s_in));
listen(l_fd,10);
while(1)
{
c_fd = accept(l_fd,(struct sockaddr *)&c_in,&len);
int n = read(c_fd,buf,1024);
inet_ntop(AF_INET,&c_in.sin_addr,addr_p,16);
write(c_fd,test,n);
close(c_fd);
}
Client
1.socket
2.connect
3.write/read
4.close
伪代码1
2
3
4
5
6
7
8
9
10
struct sockaddr_in s_in;
int s_fd;
s_fd = socket(AF_INET,SOCK_STREAM,0);
connect(s_fd,(struct sockaddr *)&s_in,sizeof(s_in));
write(s_fd,str,strlen(str)+1);
read(s_fd,buf,100);
close(s_fd);
OK最基本的HelloWorld我已经跑通了,可以深入的研究了。