服务器
// client.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <stdlib.h>
#include <string.h>
#include <WinSock2.h>
#include <process.h>
#include <windows.h>#define WSVERS MAKEWORD(2, 0)// 等待连接
void read(int *);#define MAX_IP_LEN 15int main()
{
// 服务器网络地址结构体
struct sockaddr_in server_addr;
// 客户端套接字
int client_sockfd;
//服务器端套接字
int server_sockfd;
char ip_address[MAX_IP_LEN+1];
char buffer[1024]=("");
int portnumber = 0; WSADATA wsadata; //输入服务器地址和端口地址
printf("please enter the address of server\n");
scanf("%s", ip_address);
printf("please enter the portnumber\n");
scanf("%d", &portnumber); //初始化socket
if (WSAStartup(WSVERS, &wsadata))
perror("WSAStartup failed\n"); // 客户端填充 sockaddr结构
memset(&server_addr,0,sizeof(server_addr));
server_addr.sin_family=PF_INET;
server_addr.sin_addr.s_addr=inet_addr(ip_address);
server_addr.sin_port=htons(portnumber); //创建套接字--面向连接通信,TCP协议
if((server_sockfd=socket(PF_INET,SOCK_STREAM,0))<0)
{
WSAGetLastError();
Sleep(5000);
exit (1);
} //连接服务器
if (connect (server_sockfd,(struct sockaddr *)(&server_addr), sizeof (struct sockaddr)) <0)
{
WSAGetLastError();
Sleep(5000);
exit (1);
}
//连接成功
printf("connected to server\n"); //开启新线程用于发送消息
_beginthreadex(NULL,0,(unsigned int (__stdcall *)(void *))read, &server_sockfd, 0, 0); //读取并发送用户输入的消息
printf("enter your message. enter EXIT to exit\n");
while(strcmp(buffer, "EXIT")!=0)
{
scanf("%s",buffer);
if (send (server_sockfd, buffer, strlen(buffer), 0) < 0)
{
WSAGetLastError();
Sleep(5000);
//exit (1);
}
}
Sleep(5000);
closesocket(server_sockfd);
WSACleanup();
}
void read(int* sockfd)
{
int nbytes;
char buffer[1024]=("");;
while(1)
{
if((nbytes= recv (*sockfd, buffer, 1024, 0))<0)
{
WSAGetLastError();
Sleep(5000);
//exit(1);
}
buffer[nbytes]='\0';
//收到消息
printf("Received message:%s/n",buffer);
}
}
客户端
// client.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <stdlib.h>
#include <string.h>
#include <WinSock2.h>
#include <process.h>
#include <windows.h>#define WSVERS MAKEWORD(2, 0)// 等待连接
void read(int *);#define MAX_IP_LEN 15int main()
{
// 服务器网络地址结构体
struct sockaddr_in server_addr;
// 客户端套接字
int client_sockfd;
//服务器端套接字
int server_sockfd;
char ip_address[MAX_IP_LEN+1];
char buffer[1024]=("");
int portnumber = 0; WSADATA wsadata; //输入服务器地址和端口地址
printf("please enter the address of server\n");
scanf("%s", ip_address);
printf("please enter the portnumber\n");
scanf("%d", &portnumber); //初始化socket
if (WSAStartup(WSVERS, &wsadata))
perror("WSAStartup failed\n"); // 客户端填充 sockaddr结构
memset(&server_addr,0,sizeof(server_addr));
server_addr.sin_family=PF_INET;
server_addr.sin_addr.s_addr=inet_addr(ip_address);
server_addr.sin_port=htons(portnumber); //创建套接字--面向连接通信,TCP协议
if((server_sockfd=socket(PF_INET,SOCK_STREAM,0))<0)
{
WSAGetLastError();
Sleep(5000);
exit (1);
} //连接服务器
if (connect (server_sockfd,(struct sockaddr *)(&server_addr), sizeof (struct sockaddr)) <0)
{
WSAGetLastError();
Sleep(5000);
exit (1);
}
//连接成功
printf("connected to server\n"); //开启新线程用于发送消息
_beginthreadex(NULL,0,(unsigned int (__stdcall *)(void *))read, &server_sockfd, 0, 0); //读取并发送用户输入的消息
printf("enter your message. enter EXIT to exit\n");
while(strcmp(buffer, "EXIT")!=0)
{
scanf("%s",buffer);
if (send (server_sockfd, buffer, strlen(buffer), 0) < 0)
{
WSAGetLastError();
Sleep(5000);
//exit (1);
}
}
Sleep(5000);
closesocket(server_sockfd);
WSACleanup();
}
void read(int* sockfd)
{
int nbytes;
char buffer[1024]=("");;
while(1)
{
if((nbytes= recv (*sockfd, buffer, 1024, 0))<0)
{
WSAGetLastError();
Sleep(5000);
//exit(1);
}
buffer[nbytes]='\0';
//收到消息
printf("Received message:%s/n",buffer);
}
}
// client.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <stdlib.h>
#include <string.h>
#include <WinSock2.h>
#include <process.h>
#include <windows.h>#define WSVERS MAKEWORD(2, 0)// 等待连接
void read(int *);#define MAX_IP_LEN 15int main()
{
// 服务器网络地址结构体
struct sockaddr_in server_addr;
// 客户端套接字
int client_sockfd;
//服务器端套接字
int server_sockfd;
char ip_address[MAX_IP_LEN+1];
char buffer[1024]=("");
int portnumber = 0; WSADATA wsadata; //输入服务器地址和端口地址
printf("please enter the address of server\n");
scanf("%s", ip_address);
printf("please enter the portnumber\n");
scanf("%d", &portnumber); //初始化socket
if (WSAStartup(WSVERS, &wsadata))
perror("WSAStartup failed\n"); // 客户端填充 sockaddr结构
memset(&server_addr,0,sizeof(server_addr));
server_addr.sin_family=PF_INET;
server_addr.sin_addr.s_addr=inet_addr(ip_address);
server_addr.sin_port=htons(portnumber); //创建套接字--面向连接通信,TCP协议
if((server_sockfd=socket(PF_INET,SOCK_STREAM,0))<0)
{
WSAGetLastError();
Sleep(5000);
exit (1);
} //连接服务器
if (connect (server_sockfd,(struct sockaddr *)(&server_addr), sizeof (struct sockaddr)) <0)
{
WSAGetLastError();
Sleep(5000);
exit (1);
}
//连接成功
printf("connected to server\n"); //开启新线程用于发送消息
_beginthreadex(NULL,0,(unsigned int (__stdcall *)(void *))read, &server_sockfd, 0, 0); //读取并发送用户输入的消息
printf("enter your message. enter EXIT to exit\n");
while(strcmp(buffer, "EXIT")!=0)
{
scanf("%s",buffer);
if (send (server_sockfd, buffer, strlen(buffer), 0) < 0)
{
WSAGetLastError();
Sleep(5000);
//exit (1);
}
}
Sleep(5000);
closesocket(server_sockfd);
WSACleanup();
}
void read(int* sockfd)
{
int nbytes;
char buffer[1024]=("");;
while(1)
{
if((nbytes= recv (*sockfd, buffer, 1024, 0))<0)
{
WSAGetLastError();
Sleep(5000);
//exit(1);
}
buffer[nbytes]='\0';
//收到消息
printf("Received message:%s/n",buffer);
}
}
客户端
// client.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <stdlib.h>
#include <string.h>
#include <WinSock2.h>
#include <process.h>
#include <windows.h>#define WSVERS MAKEWORD(2, 0)// 等待连接
void read(int *);#define MAX_IP_LEN 15int main()
{
// 服务器网络地址结构体
struct sockaddr_in server_addr;
// 客户端套接字
int client_sockfd;
//服务器端套接字
int server_sockfd;
char ip_address[MAX_IP_LEN+1];
char buffer[1024]=("");
int portnumber = 0; WSADATA wsadata; //输入服务器地址和端口地址
printf("please enter the address of server\n");
scanf("%s", ip_address);
printf("please enter the portnumber\n");
scanf("%d", &portnumber); //初始化socket
if (WSAStartup(WSVERS, &wsadata))
perror("WSAStartup failed\n"); // 客户端填充 sockaddr结构
memset(&server_addr,0,sizeof(server_addr));
server_addr.sin_family=PF_INET;
server_addr.sin_addr.s_addr=inet_addr(ip_address);
server_addr.sin_port=htons(portnumber); //创建套接字--面向连接通信,TCP协议
if((server_sockfd=socket(PF_INET,SOCK_STREAM,0))<0)
{
WSAGetLastError();
Sleep(5000);
exit (1);
} //连接服务器
if (connect (server_sockfd,(struct sockaddr *)(&server_addr), sizeof (struct sockaddr)) <0)
{
WSAGetLastError();
Sleep(5000);
exit (1);
}
//连接成功
printf("connected to server\n"); //开启新线程用于发送消息
_beginthreadex(NULL,0,(unsigned int (__stdcall *)(void *))read, &server_sockfd, 0, 0); //读取并发送用户输入的消息
printf("enter your message. enter EXIT to exit\n");
while(strcmp(buffer, "EXIT")!=0)
{
scanf("%s",buffer);
if (send (server_sockfd, buffer, strlen(buffer), 0) < 0)
{
WSAGetLastError();
Sleep(5000);
//exit (1);
}
}
Sleep(5000);
closesocket(server_sockfd);
WSACleanup();
}
void read(int* sockfd)
{
int nbytes;
char buffer[1024]=("");;
while(1)
{
if((nbytes= recv (*sockfd, buffer, 1024, 0))<0)
{
WSAGetLastError();
Sleep(5000);
//exit(1);
}
buffer[nbytes]='\0';
//收到消息
printf("Received message:%s/n",buffer);
}
}
服务端:
socket
bind
listen
accept
recv/send
closesocket
客户端:
socket
connect
recv/send
closesocket
你看看你有什么地方不对
你单纯贴这点代码很难辨别
recv/send可以循环发送接收
accept也是一个循环,接收客户端的链接
你的代码错了吧