QT+网络编程。。适合出学者
来源:互联网 发布:mac没有flash怎么办 编辑:程序博客网 时间:2024/06/01 11:01
广工10级
转载请标明来源:http://blog.csdn.net/shiyi_2012/article/details/7391099
先看一下实现的效果:
我的这个qt是客户端,只负责接收数据,所以需要一个服务端来发数据。对于服务端,后面我有提供一个服务端程序,大家也可以随便找一个都可以,只要有发送数据就可以的啦。由图可知,这个qt客户端既可以接受同一台计算机同一个系统的服务端发送的数据,也可以是来自不同系统、不同计算机的服务端程序发送的数据。我们主要是说怎样实现客户端的程序,10行代码就可以啦,是不是很简单。。。。
对于这个程序很简单就可以实现的,首先用designer设计一个窗口,里面放一个按键,一个lineEdit部件和一个listBox就可以啦。按键用信号与槽机制(菜单的connection)与一个函数(我的是connect( )函数)挂钩,该函数的代码填充如下:
#define PORT "5555"
#define MAXDATASIZE 125
#include <qvariant.h>
#include <qdialog.h>
#include <qsocketdevice.h>
#include <qhostaddress.h>
void Form1::Connect()
{
char buf[MAXDATASIZE];
QSocketDevice *sockfd; //定义套接字
QHostAddress their_addr; //.定义地址
sockfd = new QSocketDevice(QSocketDevice::Stream); //初始化套接字
their_addr.setAddress( lineEdit1->text() ); //获取地址
sockfd->connect(their_addr,atoi(PORT)); //绑定地址与端口号
sockfd->readBlock(buf,MAXDATASIZE); //接收数据
printf("******buf == %s\n",buf); //在总端显示数据
listBox1->insertItem(buf); //在标签显示数据
}
注意:
1.部件的名字要和程序对应啊。。如:lineEdit1、listBox1
2.服务程序端口号要和服务端对应,我这里都是5555.
然后保存就可以啦。。。。
最后在总端执行qmake以及make就产生可执行文件,执行该文件即可。。。
当然加上汉化,就更好看啦,关于如何汉化,很简单,我的上篇文章就写了。。。。
附上我的服务端程序:
/*server.c*/
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/ioctl.h>
#include <unistd.h>
#include <netinet/in.h>
#define PORT 5555
#define BUFFER_SIZE 1024
#define MAX_QUE_CONN_NM 5
int main()
{
struct sockaddr_in server_sockaddr, client_sockaddr;
int sin_size, sendbytes;
int sockfd, client_fd;
char buf[BUFFER_SIZE];
if ((sockfd = socket(AF_INET,SOCK_STREAM,0))== -1) return; //socket函数
printf("Socket id = %d\n",sockfd);
server_sockaddr.sin_family = AF_INET;
server_sockaddr.sin_port = htons(PORT);
server_sockaddr.sin_addr.s_addr = INADDR_ANY;
bzero(&(server_sockaddr.sin_zero), 8);
if (bind(sockfd, (struct sockaddr *)&server_sockaddr, sizeof(struct sockaddr))== -1) return; //bind绑定函数
printf("Bind success!\n");
if (listen(sockfd, MAX_QUE_CONN_NM) == -1) return; //listen侦听函数
printf("Listening....\n");
while(1){
if ((client_fd = accept(sockfd, (struct sockaddr *)&client_sockaddr, &sin_size)) == -1) return;//accept接收函数
memset(buf , 0, sizeof(buf));
if ((sendbytes = send(client_fd,"long ge long ge", BUFFER_SIZE, 0)) == -1) return;//send发送函数
printf("send a message: %s\n", buf);
}
return;
}
- QT+网络编程。。适合出学者
- 出学者
- 出学者的茫然~~
- MTK机制,适合新学者
- 电商项目 简单的mvp 适合出学者 view层和presenter层的接口回调
- QT:Qt 网络编程基础
- 《windows网络编程》笔记,也适合linux
- qt网络编程
- Qt网络编程之一
- Qt网络编程
- Qt网络编程
- QT网络编程实例
- QT网络编程-TCP
- QT网络编程-http
- QT网络编程-UDP
- Qt网络编程
- Qt网络编程之一
- qt网络编程
- 函数简单应用
- pat 1002
- 读取SQL Server IMAGE 类型字段生成实体文件
- 深入浅出学习Hibernate框架(一):从实例入手初识Hibernate框架 .
- 强制同步两个域控信息
- QT+网络编程。。适合出学者
- 奋斗在学习的道路上
- 学习“波普尔的伪证主义”后,我的感悟
- Android RIL架构分析——(1)本地库实现[c/cpp部分]
- 深入浅出学习Hibernate框架(二):JDBC基础操作
- 让数据库变快的10个建议
- ubuntu错误提示 error: implicit declaration of function ‘kmalloc’
- ADI公司高速PCB布板指南
- 深入浅出学习Struts框架(一):一个简单mvc模式代码示例开始