当前位置: 技术问答>linux和unix
linux多线程程序的问题
来源: 互联网 发布时间:2016-06-10
本文导语: 初学LINUX多线程,尝试了一下写了个小程序,但是总有问题,那位帮我这找找,多线程似乎又不能调试 #include #include #include #include #include #include #include #define PORT 8888 #define MAX_SIZE 1024 void thread_recv(int sockfd) { ...
初学LINUX多线程,尝试了一下写了个小程序,但是总有问题,那位帮我这找找,多线程似乎又不能调试
#include
#include
#include
#include
#include
#include
#include
#define PORT 8888
#define MAX_SIZE 1024
void thread_recv(int sockfd)
{
char msg[MAX_SIZE];
struct sockaddr from;
while(1)
{
if(recvfrom(sockfd,msg,MAX_SIZE,0,&from,NULL) != -1)
{
fputs(msg,stdout);
}
}
}//接收信息
void talk(int sockfd)
{
struct sockaddr_in addr;
int addrlen,n;
char msg[MAX_SIZE],c_addr[15],c_port[6];
pthread_t id;
printf("Please enter your friends' serverIp and serverPort:n");
scanf("%s%s",c_addr,c_port);
addr.sin_family = AF_INET;
addr.sin_port = htons(atoi(c_port));
inet_aton(c_addr,&addr.sin_addr);
if(pthread_create(&id,NULL,(void *)thread_recv,&sockfd) !=0)
{
fprintf(stderr,"Pthread Error:%sn",strerror(errno));
exit(1);
}//创建新的线程
while(1)
{
fgets(msg,MAX_SIZE,stdin);
if(sendto(sockfd,msg,MAX_SIZE,0,(struct sockaddr *)&addr,sizeof(struct sockaddr_in))== -1)
{
fprintf(stderr,"Send Error:%sn",strerror(errno));
exit(1);
}
}
}
int main()
{
int sockfd;
struct sockaddr_in addr;
if((sockfd=socket(AF_INET,SOCK_DGRAM,0))