Mac下面 服务器端
#include
#include <sys/socket.h>
#include <netdb.h>
#include <arpa/inet.h>
#include <unistd.h>
/*//window下面的要添加这几行代码
#include
#include <Winsock2.h>
#include “stdafx.h”
#progma conmment(lib,“ws2_32.lib”);
#include “windows.h”
*/
int main(int argc, const char * argv])
{
///window下面的要添加这几行代码。
WORD wVersionRquested;
WSADATA wsaData;
int err;
wVersionRquested = MAKEWORD(1,1);
err = WSAStartup(wVersionRquested,&wsaData);
if (err != 0) {
return -1;
}
if (LOBYTE(wsaData.Wversion) != 1 || HIBYTE(wsaData.wversion) != 1) {
WSACleanup();
return -1;
}/
//1.建立socket
int sock_fd = socket(AF_INET, SOCK_STREAM, PF_UNSPEC);
if (sock_fd == -1) {
printf(“server socket error\n”);
return -1;
}
//2.bind
sockaddr_in serverAddress;
serverAddress.sin_family = AF_INET;//
serverAddress.sin_port = htons(3306);//网络端口
//window 下面要写成 serverAddress.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
serverAddress.sin_addr.s_addr =INADDR_ANY;
serverAddress.sin_addr.s_addr = INADDR_ANY;
int bind_fd = bind(sock_fd, (sockaddr *)&serverAddress, sizeof(serverAddress));
if (bind_fd == -1) {
printf(“bind failed\n”);
return -1;
}
//3.listen
if(listen(sock_fd,2) == -1){
printf(“listen failed\n”);
return -1;
}
//4.accept//接受到请求
int client_fd;
sockaddr_in clientAddress;
socklen_t s = sizeof(clientAddress);
client_fd = accept(sock_fd, (sockaddr *)&clientAddress, &s);
if (client_fd == -1) {
printf(“client accept failed\n”);
return -1;
}
//5.receive//请求接收
while (true) {
char buf100];
ssize_t receData = recv(client_fd, buf, 100, 0);
if (receData == -1) {
printf(“reve error”);
continue;
}else if(receData == 0){
close(client_fd);
}
else{
//6.send
printf(“receData=%s”,buf);
char sendData100];
std::cin.getline(sendData, 100,’\n’);
ssize_t sendLength = send(client_fd, sendData, 100, 0);
if (sendLength == -1) {
printf(“send error\n”);
continue;
}
}
}
//7.close
//close(client_fd);
return 0;
}
客户端
#include
#include <sys/socket.h>
#include <netdb.h>
#include <arpa/inet.h>
#include <unistd.h>
int main(int argc, const char * argv])
{
//1.socket;
int socket_fd = socket(AF_INET, SOCK_STREAM, PF_UNSPEC);
if (socket_fd == -1) {
printf(“client scoket error\n”);
return -1;
}
//2.connect
sockaddr_in serverAddress;
serverAddress.sin_port = htons(8086);
in_addr add;
inet_aton(" ", &add);
serverAddress.sin_addr = add;
serverAddress.sin_family = AF_INET;
int connect_fd = connect(socket_fd, (sockaddr *)&serverAddress, sizeof(serverAddress));
if (connect_fd == -1) {
printf(“connect error\n”);
return -1;
}
//3.send
while (true) {
char sendData100];
std::cin.getline(sendData, 100, ‘\n’);
if (send(socket_fd, sendData, 100, 0) == -1){
printf(“send failed\n”);
continue;
}
//4.recev
char receData100];
printf(“client rece=%s”,receData);
ssize_t receLength = recv(socket_fd, receData, 100, 0);
if (receLength == -1) {
printf(“rece failed \n”);
continue;
}
}
//5.colose
//close(socket_fd);
return 0;
}