- 课程设计
- 若编译不通过,就百度所出现的错误,然后修改编辑器设置便可
- socket编程时,使用codeblocks需要加载libws2_32.a
服务器端代码
#include <iostream>
#include <stdio.h>
#include <winsock2.h>
#include <WS2tcpip.h>
#pragma comment(lib,"ws2_32.lib")
using namespace std;
int main()
{
//初始化
WSADATA wsaDate;
WORD version=MAKEWORD(2,2);
WSAStartup(version,&wsaDate);
//创建套接字
SOCKET slisten=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
//绑定IP和端口
sockaddr_in local;
local.sin_family=AF_INET;
local.sin_port=htons(8888);
local.sin_addr.S_un.S_addr=INADDR_ANY;
bind(slisten,(struct sockaddr *)&local,sizeof(sockaddr_in));
//开始监听
listen(slisten,3);
//数据处理
SOCKET sclient;
sockaddr_in client;
int addrsize=sizeof(client);
char revData[255];
cout<<" 等待连接..."<<endl;
sclient=accept(slisten,(struct sockaddr *)&client,&addrsize);
cout<<" 接收到一个连接:"<<inet_ntoa(client.sin_addr)<<endl;
int ret;
while (true)
{
//接收数据
ret = recv(sclient, revData, 255, 0);
revData[ret] = '\0';
cout<<" ["<<inet_ntoa(client.sin_addr)<<"]:"<<revData<<endl;
//发送数据
const char * sendData = " TCP服务端已接收数据!";
send(sclient, sendData, strlen(sendData), 0);
}
closesocket(slisten);
WSACleanup();
return 0;
}
客户端代码
#include <iostream>
#include <stdio.h>
#include <winsock2.h>
#include <WS2tcpip.h>
#include <string>
#pragma comment(lib,"ws2_32.lib")
using namespace std;
int main()
{
//初始化
WSADATA wsaData;
WORD version=MAKEWORD(2,2);
WSAStartup(version,&wsaData);
//创建套接字
SOCKET sclient;
sclient=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
//绑定IP和端口
sockaddr_in server;
memset(&server,0,sizeof(sockaddr_in));
server.sin_family=PF_INET;
server.sin_port=htons(8888);
server.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
//连接服务器
connect(sclient,(struct sockaddr*)&server,sizeof(sockaddr_in));
cout<<" TCP客户端启动!"<<endl;
cout<<" 已连接TCP服务端!"<<endl;
//发送数据
while (TRUE)
{
string data;
cout<<" 发送数据:";
getline(cin,data);
const char * sendData;
sendData = data.c_str();
send(sclient, sendData, strlen(sendData), 0);
char recData[255];
int ret = recv(sclient, recData, 255, 0);
if(ret>0){
recData[ret] = 0x00;
cout<<recData<<endl;
}
}
// 释放连接和进行结束工作
closesocket(sclient);
WSACleanup();
return 0;
}