unix环境编程学习笔记---------套接字------socket------客户端
来源:互联网 发布:网络没有网上邻居 编辑:程序博客网 时间:2024/06/05 09:53
简单的客户端:::::
socket
/*
要点:
对于给定的监听套接口,内核要为其维护俩个队列:
1.已完成连接的队列
2.未完成连接的队列
*/
int main()
{
int sockfd =0;
sockfd =socket(PF_INET,SOCK_STREAM,0);
if(sockfd==-1)
{
perror("fun socket \n");
exit(0);
}
//客户端要要指定要连接哪一个服务器
struct sockaddr_in srvaddr;
srvaddr.sin.family=AF_INET;
srvaddr.sin_port=htons(8001);
srvaddr.sin.addr.s_addr=inet_addr("192.168.6.249");
//客户端开始连接
if(connect(sockfd,(struct sockaddr*)(&srvaddr),sizeof(srvaddr))<0)
{
perror("fun socket \n");
exit(0);
}
//连接建立以后,开始读写数据
//开辟一个内存区域用于容纳读取的内容
//客户端开始发送数据
char revbuf[1024]={0};
char sendbuf[1024]={0};
while(fgets(sendbuf,sizeof(sendbuf),stdin)!=NULL)//从标准输入获取输入, stdin 也是一个文件描述符,它所指向的是 :标准输入--键盘
{
//向服务器写数据
write(sockfd,sendbuf,strlen(sendbuf));//向套接字中写入数据
//从服务器读数据
read(sockfd,revbuf,sizeof(revbuf));
//read函数,从文件描述符里面读取数据把数据读取到这个自己开辟的内存里面即:buf
int ret=read(conn,revbuf,sizeof(revbuf));
if(ret==0)
{
//如果在读的过程重,对方已经关闭,tcpip 协议会返回一个0的数据包
printf("对方已经关闭");
exiy(0);
}
else if(ret<0)
{
printf("读取数据失败");
exit(0);
}
//下面开始写数据
fputs(revbuf,stdout);//从服务器端收到数据,打印到屏幕上。
//把内存缓冲区空间清零
memset(revbuf,0,sizeof(revbuf));
memset(sendbuf,0,siezeof(sendbuf));
}
close(fd);
return 0;
}
//然后,运行 netstat -na |grep 8001 可以查看我们编写的socket程序(端口号为8001)
socket
/*
要点:
对于给定的监听套接口,内核要为其维护俩个队列:
1.已完成连接的队列
2.未完成连接的队列
*/
int main()
{
int sockfd =0;
sockfd =socket(PF_INET,SOCK_STREAM,0);
if(sockfd==-1)
{
perror("fun socket \n");
exit(0);
}
//客户端要要指定要连接哪一个服务器
struct sockaddr_in srvaddr;
srvaddr.sin.family=AF_INET;
srvaddr.sin_port=htons(8001);
srvaddr.sin.addr.s_addr=inet_addr("192.168.6.249");
//客户端开始连接
if(connect(sockfd,(struct sockaddr*)(&srvaddr),sizeof(srvaddr))<0)
{
perror("fun socket \n");
exit(0);
}
//连接建立以后,开始读写数据
//开辟一个内存区域用于容纳读取的内容
//客户端开始发送数据
char revbuf[1024]={0};
char sendbuf[1024]={0};
while(fgets(sendbuf,sizeof(sendbuf),stdin)!=NULL)//从标准输入获取输入, stdin 也是一个文件描述符,它所指向的是 :标准输入--键盘
{
//向服务器写数据
write(sockfd,sendbuf,strlen(sendbuf));//向套接字中写入数据
//从服务器读数据
read(sockfd,revbuf,sizeof(revbuf));
//read函数,从文件描述符里面读取数据把数据读取到这个自己开辟的内存里面即:buf
int ret=read(conn,revbuf,sizeof(revbuf));
if(ret==0)
{
//如果在读的过程重,对方已经关闭,tcpip 协议会返回一个0的数据包
printf("对方已经关闭");
exiy(0);
}
else if(ret<0)
{
printf("读取数据失败");
exit(0);
}
//下面开始写数据
fputs(revbuf,stdout);//从服务器端收到数据,打印到屏幕上。
//把内存缓冲区空间清零
memset(revbuf,0,sizeof(revbuf));
memset(sendbuf,0,siezeof(sendbuf));
}
close(fd);
return 0;
}
//然后,运行 netstat -na |grep 8001 可以查看我们编写的socket程序(端口号为8001)
0 0
- unix环境编程学习笔记---------套接字------socket------客户端
- unix环境编程学习笔记------套接字缓冲区的原理
- UNIX环境编程-----原始套接字学习笔记----转载实例
- UNIX环境编程---------原始套接字学习笔记-----原始套接字的bind操作
- UNIX环境编程--------原始套接字学习笔记-----Linux原始套接字实现分析
- 《UNIX环境高级编程》笔记--UNIX域套接字
- 《UNIX环境高级编程》笔记--UNIX域套接字
- 《UNIX环境高级编程》笔记--UNIX域套接字
- UNIX环境高级编程学习之第十六章网络IPC:套接字 - 简单TCP Socket 通信
- UNIX环境高级编程学习之第十六章网络IPC:套接字 - 简单UDP Socket 通信
- unix环境高级编程-------socket(套接字)
- Unix环境高级编程学习笔记(十一) 网络IPC:套接字
- Unix环境编程学习笔记----如何理解套接字缓冲区???? ?其作用和原理是什么???
- Unix环境高级编程学习笔记(十一) 网络IPC:套接字
- 《UNIX网络编程》学习笔记:基本TCP套接字编程
- UNIX环境学习笔记------原始套接字-----IP头部定义
- 【Unix 网络编程】说说 socket 套接字
- Unix网络编程学习笔记【1】套接字地址结构
- String的compareTo()方法返回值
- 离线谷歌卫星地图加载服务中间件调用示例 For Flex
- 使用 PL/SQL Developer 连接oracle 时报错解决办法
- windows下用eclipse+goclipse插件+gdb搭建go语言开发调试环境
- 019.Logic Operator 逻辑运算
- unix环境编程学习笔记---------套接字------socket------客户端
- concurrent run()函数,立刻运行------------
- Struts2如何传值到JSP页面
- 简单彩虹动画的效果实现
- 智能计时器SmartTimer
- Toast 小知识
- Java(Android)线程池
- distribution源码分析(二):registry启动
- r.style r.styleable r.attr