Linux下基于socket多线程并发通信的实现

 

编译服务器端程序 pthread_server.c

$gcc pthread_server.c –o server –lpthread

编译客户端程序 pthread_client.c:

$gcc pthread_client.c –o client

编译在开发板上跑的客户端程序:

$arm-linux-gcc client.c –o arm_client

 

先启动服务器端的程序 server:

$./server

打开另一个终端,启动客户端的程序 client:

$./client 127.0.0.1 9734

 

arm_client 放到开发板上,启动 arm_client:

$./arm_client 219.222.170.9 9734

 

结果 :

服务器端:

tongs@tong's-desktop:~/c_c++_program/sock_inet_comm2$ ./server

server waiting for connect

receive from client is client

receive from client is client

receive from client is arm_client

receive from client is arm_client

客户端:

tongs@tong's-desktop:~/c_c++_program/sock_inet_comm2$ ./client 127.0.0.1 9734

client

client

exit

 

开发板服务器端

[/mnt/yaffs/nfs_share/sock_tcp/thread_socket]./arm_client  219.222.170.9 9734

arm_client

arm_client

exit

 

 

 

 

  • 0
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
您好!对于您提到的问题,我可以为您提供一些基本的信息。 在C++中,您可以使用多线程实现并发的程序。多线程允许您同时执行多个任务,以提高程序的效率和性能。C++11引入了一个线程库,其中包含了一些与多线程编程相关的类和函数。 在Linux环境下,您可以使用socket进行网络通信Socket是一种通信机制,它允许不同的计算机通过网络进行数据交换。在C++中,可以使用socket API来创建、连接、发送和接收数据。 下面是一个简单的示例代码,展示了在Linux环境下使用多线程socket进行通信的基本步骤: ```cpp #include <iostream> #include <thread> #include <sys/socket.h> #include <arpa/inet.h> void clientThread() { // 创建socket int clientSocket = socket(AF_INET, SOCK_STREAM, 0); // 设置服务器的IP地址和端口号 struct sockaddr_in serverAddress; serverAddress.sin_family = AF_INET; serverAddress.sin_port = htons(12345); serverAddress.sin_addr.s_addr = inet_addr("127.0.0.1"); // 连接到服务器 connect(clientSocket, (struct sockaddr*)&serverAddress, sizeof(serverAddress)); // 发送数据 const char* message = "Hello from client!"; send(clientSocket, message, strlen(message), 0); // 关闭socket close(clientSocket); } int main() { // 创建一个新线程来执行客户端代码 std::thread clientThread(clientThread); // 等待线程执行完毕 clientThread.join(); return 0; } ``` 这只是一个简单的例子,仅用于演示多线程socket通信的基本概念。在实际应用中,您可能还需要处理错误、添加更多的功能等。 希望这些信息对您有所帮助!如果您有任何进一步的问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值