linux下socket程式設計再改進版

2021-06-18 23:01:25 字數 2284 閱讀 3915

基於上次的改進版,實現了伺服器的**功能,基本實現了區域網聊天室的功能。

此版改進之處:

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...