Last active
November 14, 2017 22:46
-
-
Save myisjon/9658276 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#pragma warning(disable:4996) | |
#include "winsock2.h" | |
#include <iostream> | |
#include <string> | |
#pragma comment(lib,"WS2_32.lib") | |
using namespace std; | |
int Client_Port(char * ip) | |
{ | |
WSADATA data; | |
WORD w = MAKEWORD(2,0); //定义版本号 | |
::WSAStartup(w,&data); | |
SOCKET s; | |
char sztext[2048]; | |
s = ::socket(AF_INET,SOCK_STREAM,0); //创建TCP套接字 | |
sockaddr_in addr; | |
addr.sin_family = AF_INET; //初始化套接字 | |
addr.sin_port = htons(8010); | |
addr.sin_addr.S_un.S_addr = inet_addr(ip); | |
::connect(s,(sockaddr*)&addr,sizeof(addr)); //发送到服务器 | |
string name; | |
cout<<"名字:"; | |
::send(s,"名字:",sizeof("名字:"),0); | |
cin>>name; | |
char *name_st = new char[name.length()+2]; | |
strcpy(name_st,name.c_str()); | |
name_st[name.length()] = '\n'; | |
name_st[name.length() + 1] = '\0'; | |
::send(s,name_st,name.length()+2,0); | |
string content; | |
cout<<"留言信息:"; | |
::send(s,"留言信息:",sizeof("留言信息:"),0); | |
cin>>content; | |
char * content_st = new char[content.length() + 1]; | |
strcpy(content_st,content.c_str()); | |
::send(s,content_st,content.length() + 1,0); | |
::recv(s,sztext,sizeof(sztext),0); //接受服务器端的信息 | |
std::cout<<sztext<<"\r"<<endl; | |
::closesocket(s); | |
::WSACleanup(); | |
return 0; | |
} | |
int main() | |
{ | |
std::cout<<"客服端已经启动!!!"<<endl; | |
char ip[16]; | |
cout<<"请输入IP地址:"; | |
cin>>ip; | |
Client_Port(ip); | |
while(1); | |
return 0; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Sever_chat.cpp : 定义控制台应用程序的入口点。 | |
// | |
#pragma warning(disable:4996) | |
#include <iostream> | |
#include <string> | |
#include <winsock2.h> | |
#include <conio.h> | |
#include <fstream> | |
#pragma comment(lib,"WS2_32.lib") | |
using namespace std; | |
int Server_Side() | |
{ | |
WSADATA data; | |
WORD w = MAKEWORD(2,0); | |
::WSAStartup(w,&data); | |
string sztext = "留言完毕!"; | |
SOCKET s,s1; | |
s = ::socket(AF_INET,SOCK_STREAM,0); //创建套接字 | |
sockaddr_in addr,addr2; | |
int n = sizeof(addr2); | |
addr.sin_family = AF_INET; | |
addr.sin_port = htons(8010); //端口号 | |
addr.sin_addr.S_un.S_addr = INADDR_ANY; //任意地址 | |
::bind(s,(sockaddr*)&addr,sizeof(addr)); //绑定套接字 | |
::listen(s,5); | |
cout<<"等待连接!"<<endl; | |
s1 = ::accept(s,(sockaddr*)&addr2,&n); //接受客服端的链接请求 | |
char * szText; | |
szText = new char[sztext.length() + 1]; | |
strcpy(szText,sztext.c_str()); | |
if(s1 != NULL) | |
{ | |
cout<<inet_ntoa(addr2.sin_addr)<<"已经连接上了"<<endl; | |
::send(s1,szText,sztext.length()+1,0); | |
} | |
char ch[5] = {}; | |
char filename[] = "留言板.txt"; | |
ofstream fout(filename,ios::app); | |
while(recv(s1,ch,sizeof(ch),0) > 0) | |
{ | |
for(int i = 0;i < 5 &&ch[i] != '\0';i++) | |
{ | |
putchar(ch[i]); | |
fout<<ch[i]; | |
} | |
} | |
cout<<endl; | |
::closesocket(s); | |
::closesocket(s1); | |
::WSACleanup(); | |
return 0; | |
} | |
int main(void) | |
{ | |
cout<<"服务器已经启动"<<endl; | |
while(true) | |
{ | |
Server_Side(); | |
if(kbhit()) | |
{ | |
char ch; | |
cout<<"选择是否结束服务(Y/N)?"<<endl; | |
cin>>ch; | |
switch (ch) | |
{ | |
case 'Y': | |
case 'y': goto loop; //跳出循环到loop处 | |
default: | |
break; | |
} | |
} | |
} | |
loop: //goto跳出点 | |
return 0; | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment