
客户端:
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详解等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)