Linux 下基於socket的簡單網路聊天室

2021-07-09 06:01:22 字數 2739 閱讀 4505

原文  經過親測除錯修改了部分內容

服務端程式 server.c

#include #include // 包含套接字函式庫

#include #include // 包含af_inet相關結構

#include // 包含af_inet相關操作的函式

#include #include#include#include#include#define port 8889

#define mykey 12345

#define size 10240

int main()

memset(shmaddr,0,size);

int i=0;

char buf[100];

memset(buf,0,100);

int server_sockfd,client_sockfd;

int server_len,client_len;

struct sockaddr_in server_sockaddr,client_sockaddr;

server_sockfd = socket(af_inet,sock_stream, 0); // 定義套接字型別

server_sockaddr.sin_family=af_inet;

server_sockaddr.sin_port=htons(port);

server_sockaddr.sin_addr.s_addr=inaddr_any;

server_len=sizeof(server_sockaddr);

//允許重複使用本地位址和套接字繫結

int j=1;

setsockopt(server_sockfd,sol_socket,so_reuseaddr,&j,sizeof(j));

//繫結埠

if(bind(server_sockfd,(struct sockaddr *)&server_sockaddr,server_len)==-1)

if(listen(server_sockfd,5)==-1)

printf("listening...\n");

client_len=sizeof(client_sockaddr);

pid_t ppid,pid;

while(1)

printf("%s登入伺服器\n",inet_ntoa(client_sockaddr.sin_addr));

ppid=fork();

if(ppid==-1)

if(ppid==0) //子程序用於接收客戶端資訊並傳送

int recvbytes;

if(pid==0) //子子程序用於接收訊息

// printf("recvbytes=%d\n",recvbytes);

usleep(10000);

printf("client send buf=%s\n",buf);

for(i=0;i<1000;i++)}}

}if(pid>0) //子程序用於傳送訊息

}}

}if(ppid>0) //總父程序返回等待接收訊息}}

客戶端 client.c

#include #include // 包含套接字函式庫

#include #include // 包含af_inet相關結構

#include // 包含af_inet相關操作的函式

#include #include #include #define port 8889

#define ip_addr "127.0.0.1"

#define size 10240

int main()

; char blank[10] = ;

printf("歡迎來到聊天室,請輸入你的姓名:\n");

scanf("%s",myname);

len = sizeof(address);

result = connect(sockfd, (struct sockaddr *) &address, len); // 請求連線

if (result == -1)

printf("%s成功登入伺服器:\n",myname);

pid_t pid;

pid=fork();

if(pid==-1)

int sendbytes=0;

if(pid==0) //子程序用於傳送資料

// 向伺服器傳送訊息

usleep(1000);

memset(buf,0,100);

memset(tm,0,50);

}

}if(pid>0) //父程序用於接受訊息並讀取

usleep(1000);}}

close(sockfd);

return 0;

}

在ubuntu14下編譯執行通過

還有一些小問題,正在研究,初學,歡迎交流!

Linux下基於C C 的Socket程式設計例項

socket程式設計例項 例項中的伺服器通過socket連線向客戶端傳送字串 hello,you are connected 只要在伺服器上執行該伺服器軟體,在客戶端執行客戶軟體,客戶端就會收到該字串。該伺服器軟體 如下 include include include include include...

Linux下基於socket和多執行緒的聊天室小程式

要求 基於tcp編寫,乙個聊天室最多100人。客戶端 1 使用者需要登入,登入時只需要輸入乙個暱稱即可無需判斷暱稱是否重複 如果其他功能都ok考慮 2 使用者登入後連線伺服器端,進入聊天室 3 使用者可以輸入聊天資訊,也可以收到別人的聊天資訊。4 使用者可以用某個特殊單詞代表退出聊天室。額外功能 可...

Linux下基於socket多執行緒併發通訊的實現

編譯伺服器端程式 pthread server.c gcc pthread server.c o server lpthread 編譯客戶端程式 pthread client.c gcc pthread client.c o client 編譯在開發板上跑的客戶端程式 arm linux gcc c...