QNX平台上实现Socket通信的示例代码

作者:佚名 上传时间:2023-04-29 运行软件:C语言(gcc编译器) 软件版本:QNX 6.6 版权申诉

本示例代码演示了在QNX平台上如何使用Socket实现进程间通信,使用简单的TCP协议建立通信连接,并且使用多线程实现并发通信。通过本示例代码,用户可以学习如何实现在QNX平台上使用Socket进行进程间通信的基本功。

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <pthread.h>

#define PORT 8080

void *processClient(void *socket_desc){
  int sock = *(int*)socket_desc;
  int read_size;
  char message[2000], client_reply[2000];

  while( (read_size = recv(sock, client_reply, 2000, 0)) > 0 ){
    printf("[Client %d] message recieved from client: %s\n", sock, client_reply);
    write(sock, client_reply, strlen(client_reply));
    memset(&client_reply[0], 0, sizeof(client_reply));
  }
  if(read_size == 0){
    printf("[Client %d] client disconnected\n", sock);
    fflush(stdout);
  }
  else if(read_size == -1){
    perror("recv failed");
  }
  free(socket_desc);
  pthread_exit(NULL);
}

int main(){
  int socket_desc, new_socket, c, *new_sock;
  struct sockaddr_in server, client;

  socket_desc = socket(AF_INET, SOCK_STREAM, 0);
  if(socket_desc == -1){
    printf("Failed to create socket\n");
    return -1;
  }

  server.sin_family = AF_INET;
  server.sin_addr.s_addr = INADDR_ANY;
  server.sin_port = htons(PORT);

  if(bind(socket_desc, (struct sockaddr *)&server, sizeof(server)) < 0){
    printf("Failed to bind the socket\n");
    return -1;
  }

  listen(socket_desc, 3);

  printf("Waiting for incoming connections...\n");
  c = sizeof(struct sockaddr_in);

  while( (new_socket = accept(socket_desc, (struct sockaddr *)&client, (socklen_t*)&c)) ){
    printf("Connection accepted from %s:%d\n", inet_ntoa(client.sin_addr), ntohs(client.sin_port));
    pthread_t sniffer_thread;
    new_sock = malloc(1);
    *new_sock = new_socket;
    if(pthread_create(&sniffer_thread, NULL, processClient, (void*)new_sock) < 0){
      perror("could not create thread\n");
      return -1;
    }
    printf("Handler assigned\n");
  }

  if(new_socket < 0){
    printf("Connection refused\n");
    return -1;
  }
  return 0;
}

免责申明:文章和图片全部来源于公开网络,如有侵权,请通知删除 server@dude6.com

用户评论
相关推荐
QNX台上实现Socket通信示例代码
本示例代码演示了在QNX平台上如何使用Socket实现进程间通信,使用简单的TCP协议建立通信连接,并且使用多线程实现并发通信。通过本示例代码,用户可以学习如何实现在QNX平台上使用Socket进行进
QNX 6.6
C语言(gcc编译器)
2023-04-29 14:07
QNX实现socket通信示例代码
该示例代码展示了如何在QNX操作系统中使用socket进行网络通信,包括创建socket、绑定端口、监听连接请求、接收和发送数据等操作。实现方式为使用C语言函数库实现网络通信功能。#include
QNX 7.0
C语言
2023-05-27 03:37
QNX实现socket通信示例代码
该示例代码展示了如何在QNX操作系统下实现两个进程之间的socket通信,并实现了基本的客户端和服务器端的功能。// 客户端代码#include <stdio.h>#include
QNX 7.1
C语言
2023-05-29 04:22
python实现socket简单通信示例代码
首先先来简单介绍下socket:,这里主要是我自己的一些理解。这里再贴上关于socket工作原理的具体图像:大家若有看不懂的,也先别着急,看完下面的再来结合这张图理解会有更深的理解其实在本机上,我们可
pdf
346.64 KB
2021-06-05 02:43
QNX下使用Socket通信示例代码
本示例代码展示了在QNX操作系统下使用Socket实现进程间通信(IPC)的方法。具体实现方式是通过建立一个服务器进程和一个客户端进程,采用TCP/IP通信方式进行进程间消息的传递。/*服务器端代码
QNX 6.5
C语言
2023-04-21 12:53
Android平台上socket通信代码
Android平台上的socket通信源代码,包含客户端和服务端两份代码。
ZIP
0B
2018-12-28 11:01
QNX下使用SOCKET实现TCP/IP通信示例代码
该示例代码演示了在QNX操作系统下使用SOCKET库函数实现TCP/IP通信的方法,通过调用socket创建套接字,bind绑定IP地址和端口号,listen监听连接请求,accept接受连接请求,s
QNX 7.0
C语言
2023-05-22 19:15
QNX中使用socket实现TCP/IP通信示例代码
本示例代码演示了在QNX操作系统上使用socket实现TCP/IP通信的方法,通过监听端口和接收数据实现了简单的网络通信。#include <netinet/in.h>#include
QNX Neutrino RTOS 7.0
C语言
2023-03-25 02:39
API实现socket通信示例
socket的基本应用,针对初学者,老鸟们可以掠过。本示例采用Delphi2010编写
RAR
0B
2019-09-29 14:24
C#Socket实现UDP协议通信示例代码
本篇文章主要介绍了C#的Socket实现UDP协议通信示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
PDF
68KB
2020-09-11 12:14