QT+网络编程。。适合出学者

原创 2012年03月24日 22:01:10


                                                                       广工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网络编程实战源码

  • 2015年06月12日 17:45
  • 56KB
  • 下载

qt 多线程 网络编程

  • 2017年05月06日 15:11
  • 22KB
  • 下载

利用Qt进行FTP网络编程

三、FTP客户端编程在Qt中,QFtp类为我们实现了FTP协议的客户端所需要的功能,比如它不仅提供了完成最常用的各种FTP操作的函数,还能执行任意的FTP命令。需要注意,QFtp类以异步方式工作,比如...

Qt网络编程

  • 2012年09月18日 09:00
  • 548KB
  • 下载

基于qt的tcp网络编程

  • 2015年03月22日 19:53
  • 142KB
  • 下载

QT分析之网络编程(5--8)

QT分析之网络编程(五)   今天分析QNetworkAccessManager、QNetworkRequest和QNetworkReply组成的高级抽象API序列。在动手之前,把doc中有关QNet...
  • wjs1033
  • wjs1033
  • 2014年02月25日 16:05
  • 1637

QT-网络编程请求以及与qml混编

  • 2017年03月09日 18:35
  • 15KB
  • 下载

qt的tcp网络编程

  • 2015年06月28日 07:20
  • 988KB
  • 下载

基于Qt的网络编程(Http)

基于Qt的Http请求小程序,输入地址,可请求网站信息并展示。本文主要简单介绍http请求。发起请求,响应返回,超时机制。 涉及类:QNetworkAccessManager、QNetworkRepl...

QT网络编程_NETWORK

  • 2010年10月20日 20:44
  • 274KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:QT+网络编程。。适合出学者
举报原因:
原因补充:

(最多只允许输入30个字)