UNIX socket 编程
2010-07-25 12:08
162 查看
客户端像服务器端发送数据:
服务器:192.168.1.101:1234 本地端口4444(本地地址可不设置,端口由系统自动设置)
作为服务器端:
端口地址1234
服务器:192.168.1.101:1234 本地端口4444(本地地址可不设置,端口由系统自动设置)
#include <QtCore/QCoreApplication> #include <QDebug> #include <unistd.h> #include <sys/socket.h> #include <arpa/inet.h> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); int skt = socket(AF_INET, SOCK_STREAM, 0); // local address (optional) sockaddr_in localaddr; localaddr.sin_family = AF_INET; localaddr.sin_port = htons(4444); localaddr.sin_addr.s_addr = INADDR_ANY; memset(localaddr.sin_zero, 0, sizeof(localaddr.sin_zero)); bind(skt, (sockaddr *)&localaddr, sizeof(localaddr)); // remote(server) address sockaddr_in addr; addr.sin_family = AF_INET; addr.sin_port = htons(1234); char ipAddr[] = "192.168.1.101"; inet_pton(AF_INET,ipAddr ,&addr.sin_addr); memset(addr.sin_zero, 0, sizeof(addr.sin_zero)); int r = connect(skt, (sockaddr *)&addr, sizeof(addr)); qDebug() << r; char data[] = "hello world!"; send(skt, data, sizeof(data), MSG_CONFIRM); return a.exec(); }
作为服务器端:
端口地址1234
#include <QtCore/QCoreApplication> #include <QDebug> #include <unistd.h> #include <sys/socket.h> #include <arpa/inet.h> #include <sys/wait.h> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); int skt = socket(AF_INET, SOCK_STREAM, 0); // local address(server port) sockaddr_in localaddr; localaddr.sin_family = AF_INET; localaddr.sin_port = htons(1234); localaddr.sin_addr.s_addr = INADDR_ANY; memset(localaddr.sin_zero, 0, sizeof(localaddr.sin_zero)); bind(skt, (sockaddr *)&localaddr, sizeof(localaddr)); // qDebug() << "bind" << listen(skt,100); while(true) { sockaddr_in clientaddr; unsigned addrlen; int client = accept(skt, (sockaddr*)&clientaddr, &addrlen); qDebug() << "accept:" << client; int pid = fork(); if(pid < 0) { qDebug() << "child process error."; } else if(pid == 0) { // child process char buffer[100]; int dataLen = recv(client, buffer, sizeof(buffer), MSG_WAITALL); qDebug() << "data length:" << dataLen; for(int i = 0; i < dataLen; i++) { qDebug() << buffer[i]; } close(client); } else { close(client); int status; waitpid(pid, &status, 0); } } return a.exec(); }
相关文章推荐
- Linux/Unix服务端和客户端Socket编程入门实例(含源码下载)
- PHP实现系统编程(四)--- 本地套接字(Unix Domain Socket)
- socket编程学习笔记, Unix Socket和Windows Socket
- linux网络编程之socket(十五):UNIX域套接字编程和socketpair 函数
- UNIX环境高级编程学习之第十六章网络IPC:套接字 - 非阻塞的Socket通信Poll模型(多路复用), 实用Socket通信模板
- UNIX下的Socket编程2008-08-24 13:10原文链接:http://www.host01.com/article/server/00070002/0621409103916080.htm
- unix socket function网络编程API大全
- ios调用unix 网络编程的socket 接口实行UDP通信, 锁屏后解屏会闪退的解决方法
- UNIX SOCKET编程简介
- UNIX Socket编程基本知识
- unix环境IPC通信之socket(三),tcp采用并发服务器编程实例,多进程方式 4000
- 关于UNIX Domain Socket 编程
- 【Unix 网络编程】说说 socket 套接字
- Unix/Linux 编程:网络编程之一 Socket
- Unix/Linux环境下的Socket编程
- 关于UNIX Domain Socket 编程
- UNIX的套接口(Socket)编程简介
- UNIX学习之路 一步一个脚印之socket编程/Socket的参数
- Linux/Unix下Socket编程
- 【Unix 网络编程】TCP Socket 编程基础(0)