原文 經過親測除錯修改了部分內容
服務端程式 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...