标签:DRC bre sdn start socket and || tps 要求
IDE:CodeBlocks
(如果在CB下进行Sokcet编程,要添加一个文件)详情请看这个:https://www.cnblogs.com/Xbert/p/5466963.html
然后这个程序是要同时开启客户端和服务端两个,调试很麻烦,建议双开两个codeblocks,链接:https://blog.csdn.net/weixin_41505011/article/details/80575522
客户端代码:
这里开启了一个新线程来接受用户端传来的消息,主线程则可以输出消息
#include <stdio.h>
#include <stdlib.h>
#include <Winsock2.h>
char recvBuf[50];
SOCKET sockSrv;
SOCKET sockConn;
DWORD WINAPI Server_Receive_Thread(LPVOID lp)
{
int i;
SOCKET s = (SOCKET)lp;
while(1){ //之前在这里犯错了,线程也是要循环的,不能用if
if(recv(s, recvBuf, 50, 0)>0){
for(i=0;;i++){
if(recvBuf[i]==‘]‘)
break;
}
if(recvBuf[i+2]==‘q‘)
if(recvBuf[i+3]==‘u‘)
if(recvBuf[i+4]==‘i‘)
if(recvBuf[i+5]==‘t‘){
for(int j=0;j<=i;j++)
printf("%c",recvBuf[j]);
printf("已经退出聊天!\n");
continue;
}
printf("%s\n", recvBuf);
}
}
return 0;
}
void main()
{
printf("服务器开启!\n");
WORD wVersionRequested; //要求使用winSock的版本
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1 );
err = WSAStartup( wVersionRequested, &wsaData ); //初始化winSock
if ( err != 0 )
{
return;
}
if ( LOBYTE( wsaData.wVersion ) != 1 || HIBYTE( wsaData.wVersion ) != 1 )
{
WSACleanup( ); //版本不对,即退出
return;
}
SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0); //创建一个套接字,
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY); //就是要用来通讯的 IP 地址信息。
addrSrv.sin_family=AF_INET; //这是告诉 WinSock 使用的是 IP 地址族
addrSrv.sin_port=htons(6000); //sin_port 就是要用来通讯的端口号
bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
SOCKADDR_IN addrClient;
int len=sizeof(SOCKADDR);
while(1)
{
listen(sockSrv,5);
//客户端有了连接请求,来用这个函数来接受请求
SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);
//创建接受消息的线程
HANDLE hThread = CreateThread(NULL, 0, Server_Receive_Thread, sockConn, 0, NULL);
char sendBuf[50];
sprintf(sendBuf,"您的ip地址是:%s ",inet_ntoa(addrClient.sin_addr));
send(sockConn,sendBuf,strlen(sendBuf)+1,0);
char message[50];
while(1){
scanf("%s",message);
sprintf(sendBuf,"[Server]:%s ",message);
send(sockConn,sendBuf,sizeof(sendBuf),0);
if(strcmp(message,"quit")==0)
exit(0);
}
closesocket(sockConn);
}
}
标签:DRC bre sdn start socket and || tps 要求
原文地址:https://www.cnblogs.com/tangdingkang/p/12073144.html