刚介入linux c的socket编程没多久,想要写一个socket客户端,实现多线程处理发送和接收,哪位大侠帮帮忙啊

刚介入linux c的socket编程没多久,想要写一个socket客户端,实现多线程处理发送和接收,哪位大侠帮帮忙啊,第1张

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <pthread.h>

#include <unistd.h>

#include <sys/types.h>

#include <sys/socket.h>

#include <netinet/in.h>

#define PORT 8888

void *yourfunction(void *connect_fd)

{

int connfd = *((int *)connect_fd)

。。。。

} //你没说具体的应用,所以只能写这么多了。在这里面直接对connfd调用read和write函数就可以和客户端收发数据了。

//补充:是啊 返回给客户端什么信息啊?

int main(void)

{

int sockfd, n, connfd

pthread_t tid

struct sockaddr_in servaddr

sockfd = socket(AF_INET, SOCK_STREAM, 0)

if (sockfd == -1)

{

perror("socket:")

exit(1)

}

bzero(&servaddr, sizeof(servaddr))

servaddr.sin_family = AF_INET

servaddr.sin_addr.s_addr = htonl(INADDR_ANY)

servaddr.sin_port = htons(PORT)

n = bind(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr))

if (n == -1)

{

perror("bind:")

exit(1)

}

n = listen(sockfd, 20)

if (n == -1)

{

perror("listen:")

exit(1)

}

while (1)

{

connfd = accept(sockfd, (struct sockaddr *)&servaddr, NULL)

pthread_create(&tid, NULL, yourfunction, (void *)&connfd)

}

return 0

}

我就是用ubuntu.为什么使用linux客户端?1.windows能做的linux大都能做.因为linux占用资源少,还有就是开源,我可以自己给自己安装邮件服务器,安装VPS.自己给自己写脚本.玩虚拟机方便.2.如果是系统坏了,可以在10-20分钟内恢复原样,如果硬件坏了,我可以直接换到别的机器去,并正常使用.如果WINDOWS文件坏了,请准备1-2小时恢复,甚至需要重装系统.别和我说用GHOST,你不可能每天都做1个备份吧,你用以前的备份会有文件丢失的.硬件坏了,你跑那里找去?一个备份几G.LINUX做一个备份只需要大概20分钟,不到1G,还是可以在后台 *** 作.如果你是商业用户,你系统坏了无法使用的时候,你觉得那时候你会选用那个?2.你不要忘记了,你用的windows正版是要钱的.连软件都要钱.linux是免费的.这就是最大的区别,用着踏实.

其实大家如果对tcp/ip网络编程这一块不是很熟悉的话,还有一个好办法就是直接编写IO *** 作的程序,通过Xinetd来管理网络这一块,一样可以实现的,而且非常方便.

这样就不需要别人帮你创建服务端了.

至于客户端,没有办法,如果可以的话,可以采用tcp工具替代,当然这些都是歪路子.

如果只是文件传输的话,就选用FTP原生的服务器吧,比自己折腾得稳定的多.


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/9001550.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-23
下一篇 2023-04-23

发表评论

登录后才能评论

评论列表(0条)

保存