linux socket编程麻烦达人给一下程序的注释

linux socket编程麻烦达人给一下程序的注释,第1张

客户端

int main()

{ int sockfd;//sokce fd 可以man socket 看socket();这个函数的原型

int len;

struct sockaddr_in address;//connect的函数参数,主要是服务器的ip和端口

int result;

char ch = `A`;//发送的消息

sockfd = socket(AF_INET,SOCK_STREAM,0); addresssin_family = AF_INET; //创建socket

addresssin_addrs_addr = inet_addr(“127001”);//设置服务器的ip地址

addresssin_port = 9734;//设置端口

len = sizeof(address); //传给connect函数的长度

result = connect(sockfd,(struct sockaddr )&address,len);

if(result == -1) {//连接到服务器,成功返回0,注意这里是阻塞方式

peror(“oops:client1”);

exit(1); }

write(sockfd,&ch,1); //往服务器发送消息

read(sockfd,&ch,1);//从服务器读回消息,存放到ch

printf(“char from server = c\n”,ch);//读回的消息,打印

close(sockfd);

exit(0); }

服务器端

#include<sys/typesh> #include<sys/socketh>

#include<stdioh>

#include<netinet/inh>

#include<arpa/ineth>

#include<unistdh>

int main()

{ int server_sockfd,client_sockfd;

int server_len,client_len;

struct sockaddr_in server_address;

struct sockaddr_in client_address;

server_sockfd = socket(AF_INET,SOCK_STEAM,0);

server_addresssun_family = AF_INET;

server_addresssin_addrs_addr = inet_addr(“127001”);

server_addresssin_port = 9734;

server_len = sizeof(server_address);

上面部分从简

bind(server_sockfd,(struct sockaddr )&server_address,server_len); //绑定端口和ip,

listen(server_sockfd,5);//服务器开始监听端口

while(1){

char ch;

printf(‘server waiting\n”);

client_len = sizeof(client_address); client_sockfd = accept(server_sockfd,(struct sockaddr)

&client_address,&client_len);//开始等待客户端连接,如果没有,则阻塞

read(client_sockfd,&ch,1); //建立一个连接后,从客户端读取消息

ch++;//A=>B

write(client_sockfd,&ch,1);//写回客户端

close(client_sockfd);}

这是一个简单测试网络连接的程序,其实如果做服务器的话,一般采用的是select +noblocking 或 多线程,线程池,或多进程,进程池。。。

做了个简单的分析,如果不明白的地方,可以发我邮件touchao123@126com

没看出啥问题来,但有可能是临界资源冲突引起了,你将doneset(),放到finally块中试试,多写一个finally,毕竟在application domain未挂掉之前能保证代码执行。放在开始部分,导致异步可能会有多个执行而引起临界资源冲突。

1、 Socket(套接字)概念

网络上两个程序通过一个双向的通信连接实现数据的交换,这个连接的一段称为一个 socket ,socket是通信的基石,是支持TCP/IP协议的网络通信的基本 *** 作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。

Socket是对TCP/IP协议的封装,它把复杂的TCP/IP协议族隐藏在Socket接口后面,提供一个易用的接口,所以Socket本身并不是协议,而是一个调用接口(API)。

在一定程度可以认为Socket位于应用层和传输层之间。创建Socket连接时,可以指定使用的传输层协议,Socket可以支持不同的传输层协议(TCP或UDP),当使用TCP协议进行连接时,该Socket连接就是一个TCP连接。

2、 建立Socket连接

建立Socket连接至少需要一对套接字,其中一个运行于客户端,称为ClientSocket,另一个运行于服务器端,称为ServerSocket。

套接字之间的连接过程分为 三个步骤 :

(1)服务器监听:服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态,等待客户端的连接请求。

(2)客户端请求:指客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。

(3)连接确认:当服务器端套接字监听到或者说接收到客户端套接字的连接请求时,就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户 端,一旦客户端确认了此描述,双方就正式建立连接。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。

3、 Socket连接与>

以上就是关于linux socket编程 麻烦达人给一下程序的注释全部的内容,包括:linux socket编程 麻烦达人给一下程序的注释、C# Socket监听程序问题、Socket详解等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10112506.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存