#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原生的服务器吧,比自己折腾得稳定的多.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)