基於上次的改進版,實現了伺服器的**功能,基本實現了區域網聊天室的功能。
此版改進之處:
2、給伺服器端成功accept()產生的confd加入乙個鍊錶中,當收到訊息的時候,將**標誌flag置為1,**的時候遍歷鍊錶,和接收到訊息的confd不同的就**。
3、每當乙個客戶端退出時,收回執行緒id的同時,將此次連線的confd從鍊錶中刪除。
下面是**:
#include#includetypedef int elemtype;
typedef struct listnodelistnode;
listnode * linklistinit(listnode * head)
listnode * addnode(listnode *head,elemtype value)
else
head = ptr;
return head;
}listnode * findnode(listnode * head,elemtype value)
while(ptr != null)
return null;
}listnode * delnode(listnode *head,elemtype value)
} else if(elemptr->next == null)
ptr->next = null;
} else
ptr->next = elemptr->next;
} free(elemptr);
} return head;
}void printlist(listnode *head)
printf("\n");
}
#include#include#include#include#include#include#include#include#include#include#include"linklist.c"
#define max_len 100
#define port_num 4321
#define exit_fail_num 1
#define max_num 3
void trans(void *p);
struct trans_datap[max_num];
struct mytheradmythread[max_num];
listnode *head;
int main()
}s = s->next;
}flag = 0;
} }}
#include#include#include#include#include#include#include#include#include#include#include#define max_len 100
#define exit_fail 1
#define serv_ip "127.0.0.1"
#define port_num 4321
void dorecv(void *p)}}
}int main()
printf("socket_fd = %d\n",sockfd);
bzero(&ser,sizeof(struct sockaddr_in));
ser.sin_family = af_inet;
ser.sin_addr.s_addr = inet_addr(serv_ip);
ser.sin_port = htons(port_num);
if((confd = connect(sockfd,(struct sockaddr *)&ser,sizeof(struct sockaddr))) == -1)
printf("正在連線......\n");
sleep(2);
while(1)
gets(buff);
// fgets(buff,sizeof(buff),stdin);
fflush(stdin);
len = send(sockfd,buff,strlen(buff),0);
if(len == -1)
memset(buff,0,sizeof(buff));
} close(sockfd);
return 0;
}
執行截圖
linux下socket程式設計
一 什麼是socket socket可以看成是使用者程序與核心網路協議棧的程式設計介面。socket不僅可以用於本機的程序間通訊,還可以用於網路上不同主機的程序間通訊。socket api是一層抽象的網路程式設計介面,適用於各種底層網路協議,如ipv4 ipv6。struct sockaddr in...
linux下socket程式設計
作為乙個嵌入式開發者,在實際的研發專案中,常常需要編寫socket網路程式設計介面,提供給軟體開發人員。下面將提供乙個常用的 模板 客戶端的功能可以用微控制器多功能除錯助手進行驗證 include include include include include include include def...
linux下socket程式設計
簡單的linux下socket程式設計,分別基於tcp和udp協議實現的簡單程式 linux下socket程式設計可以概括為以下幾個函式的運用 流程 將套接字繫結到伺服器的網路位址上 if bind server sockfd,struct sockaddr my addr,sizeof struc...