服务器
// 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); 
}

}