C語言實現(xiàn)簡單的聊天室功能
更新時間:2021年06月30日 15:22:25 作者:Ywrby
這篇文章主要為大家詳細介紹了C語言實現(xiàn)簡單的聊天室功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
用C語言實現(xiàn)簡單的聊天室功能,供大家參考,具體內(nèi)容如下
服務(wù)器端
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<winsock.h>
#pragma comment(lib, "ws2_32.lib")
#define L 256
int main() {
char SendBuf[L];
char ReceiveBuf[L];
int SendLen;
int ReceiveLen;
int Length;
SOCKET socket_server;
SOCKET socket_receive;
SOCKADDR_IN ServerAdd;
SOCKADDR_IN ClientAdd;
WORD wVR;
WSADATA WsaData;
int error;
//++++++++++++++++++++++++++++++++++++++++++++++++
wVR = MAKEWORD(2, 2);
error = WSAStartup(wVR, &WsaData);
if (error != 0) {
printf("加載套接字失?。?);
return 0;
}
if (LOBYTE(WsaData.wVersion) != 2 || HIBYTE(WsaData.wVersion) != 2) {
printf("版本不符!");
WSACleanup();
return 0;
}
//++++++++++++++++++++++++++++++++++++++++++++++++
ServerAdd.sin_family = AF_INET;
ServerAdd.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
ServerAdd.sin_port = htons(5000);
//++++++++++++++++++++++++++++++++++++++++++++++++
socket_server = socket(AF_INET, SOCK_STREAM, 0);
//++++++++++++++++++++++++++++++++++++++++++++++++
if (bind(socket_server, (SOCKADDR*)&ServerAdd, sizeof(SOCKADDR)) == SOCKET_ERROR) {
printf("綁定失??!\n");
}
//++++++++++++++++++++++++++++++++++++++++++++++++
if (listen(socket_server, 5) < 0) {
printf("監(jiān)聽失敗!\n");
}
Length = sizeof(SOCKADDR);
socket_receive = accept(socket_server, (SOCKADDR*)&ClientAdd, &Length);
if (socket_receive == SOCKET_ERROR) {
printf("接受連接失??!\n");
}
while (1) {
ReceiveLen = recv(socket_receive, ReceiveBuf, L, 0);
if (ReceiveLen < 0) {
printf("接受失敗\n程序退出!\n");
break;
}
else {
printf("client say:%s\n", ReceiveBuf);
}
//++++++++++++++++++++++++++++++++++++++++++++++++
printf("please enter message:");
scanf("%s", SendBuf);
SendLen = send(socket_receive, SendBuf, L, 0);
if (SendLen < 0) {
printf("發(fā)送失敗\n");
}
}
closesocket(socket_receive);
closesocket(socket_server);
return 0;
}
客戶端
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<winsock.h>
#pragma comment(lib, "ws2_32.lib")
#define L 256
int main() {
char SendBuf[L];
char ReceiveBuf[L];
int SendLen;
int ReceiveLen;
int Length;
SOCKET socket_send;
SOCKADDR_IN ServerAdd;
WORD wVR;
WSADATA WsaData;
int error;
//++++++++++++++++++++++++++++++++++++++++++++++++
wVR = MAKEWORD(2, 2);
error = WSAStartup(wVR, &WsaData);
if (error != 0) {
printf("加載套接字失敗!");
return 0;
}
if (LOBYTE(WsaData.wVersion) != 2 || HIBYTE(WsaData.wVersion) != 2) {
printf("版本不符!");
WSACleanup();
return 0;
}
//++++++++++++++++++++++++++++++++++++++++++++++++
ServerAdd.sin_family = AF_INET;
ServerAdd.sin_addr.S_un.S_addr = inet_addr("192.168.190.1");
ServerAdd.sin_port = htons(5000);
//++++++++++++++++++++++++++++++++++++++++++++++++
socket_send = socket(AF_INET, SOCK_STREAM, 0);
if (connect(socket_send, (SOCKADDR*)&ServerAdd, sizeof(SOCKADDR)) == SOCKET_ERROR) {
printf("連接失??!\n");
}
//++++++++++++++++++++++++++++++++++++++++++++++++
while (1) {
printf("please enter message:");
scanf("%s", SendBuf);
SendLen = send(socket_send, SendBuf, L,0);
if (SendLen < 0) {
printf("發(fā)送失??!\n");
}
//++++++++++++++++++++++++++++++++++++++++++++++++
ReceiveLen = recv(socket_send, ReceiveBuf, L, 0);
if (ReceiveLen < 0) {
printf("接受失?。n程序退出\n");
break;
}
else {
printf("Server say:%s\n", ReceiveBuf);
}
}
closesocket(socket_send);
WSACleanup();
return 0;
}
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C++實現(xiàn)utf8字符串和gbk字符串互轉(zhuǎn)
這篇文章主要為大家詳細介紹了C++實現(xiàn)utf8字符串和gbk字符串轉(zhuǎn)換的相關(guān)知識,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下2025-02-02
C++11中value category(值類別)及move semantics(移動語義)的介紹
這篇文章主要給大家介紹了C++11中value category(值類別)及move semantics(移動語義)的介紹,文中介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2018-05-05

