#pragma comment(lib,"Ws2_32.lib")
#include <stdio.h>
#include <Winsock2.h>
SOCKET sockClient;
//设置接收数据和发送数据的缓存数组
char recvBuf[];
char sendBuf[];
SOCKADDR_IN addrClient;
DWORD WINAPI funB(LPVOID lp); void main(){
//要求使用的版本
WORD wVersionRequested;
//
WSADATA wsaData;
int err; wVersionRequested = MAKEWORD(,);
//初始化WinSock dll库 WSAStartup 函数返回0表示初始化成功
err = WSAStartup(wVersionRequested,&wsaData);
//测试版本获取结果
//printf("%d\n",err);
if(err!=){
printf("WinSock初始化失败\n");
return; } if(LOBYTE(wsaData.wVersion)!=||HIBYTE(wsaData.wVersion)!=){
WSACleanup();
return;
}
printf("......客户端程序已启动......\n");
char addr[];
int port;
printf("请输入服务器的IP地址:");
scanf("%s",addr);
printf("请输入服务器的端口号:");
scanf("%d",&port);
//创建Socket套接字
sockClient = socket(AF_INET,SOCK_STREAM,); //通讯的IP地址
addrClient.sin_addr.S_un.S_addr=inet_addr(addr);
//使用IP地址族
addrClient.sin_family=AF_INET;
//通讯的端口号
addrClient.sin_port=htons(port); connect(sockClient,(SOCKADDR*)&addrClient,sizeof(SOCKADDR)); strcpy(recvBuf,"");
//从服务器中获得IP地址 并向服务器发送建立连接的消息
recv(sockClient,recvBuf,,);
send(sockClient,"已经建立通讯连接",strlen("已经建立通讯连接")+,); if( strlen(recvBuf)==){
printf("警告:服务器未启动,请先启动服务器!!!\n");
//system("pause");
exit();
}else{
printf("服务器信息:%s\n",recvBuf);
} HANDLE a;
DWORD dwT;
//参数1:使用默认的安全性;参数2:与调用线程一样的栈大小;
//参数3:线程入口函数地址;参数4:传递给线程的参数;参数5:线程创建标记;参数6:新线程的ID
a=CreateThread(NULL,,funB,,,&dwT);
//循环接收和发送消息
//关闭新线程的句柄
CloseHandle(a); while(){
//从控制台接收用户输入数据发送到客户端
//printf("客户端说:");
scanf("%s",sendBuf);
send(sockClient,sendBuf,strlen(sendBuf)+,);
} //关闭套接字和连接
closesocket(sockClient);
WSACleanup(); } DWORD WINAPI funB(LPVOID lp)
{
char Message[];
while (TRUE)
{
//从服务器接收数据显示到控制台
if(recv(sockClient,Message,,) != -){
printf("服务器说:%s\n",Message);
}else{
printf("连接已经中断.....请检查服务端是否启动并重试。");
system("pause");
exit();
}
}
return ;
}

WinSocket简单聊天程序客户端的更多相关文章

  1. Socket聊天程序——客户端

    写在前面: 上周末抽点时间把自己写的一个简单Socket聊天程序的初始设计和服务端细化设计记录了一下,周二终于等来毕业前考的软考证书,然后接下来就是在加班的日子度过了,今天正好周五,打算把客户端的详细 ...

  2. Android 网络编程基础之简单聊天程序

    前一篇讲了Android的网络编程基础,今天写了一个简单的聊天程序分享一下 首先是服务端代码: package com.jiao.socketdemo; import java.io.Buffered ...

  3. websocket实现简单聊天程序

    程序的流程图: 主要代码: 服务端 app.js 先加载所需要的通信模块: var express = require('express'); var app = express(); var htt ...

  4. boost asio异步读写网络聊天程序客户端 实例详解

    boost官方文档中聊天程序实例讲解 数据包格式chat_message.hpp <pre name="code" class="cpp">< ...

  5. Java网络编程--简单聊天程序

    背景 毕业设计前的练手,学校小比赛中的一个题目. 开发环境 Java(eclipse)+Mysql 简介 使用Java+Mysql开发以个简单的聊天工具,在本次项目中实现了: 1. 用户登录(客户端至 ...

  6. Python使用Socket写一个简单聊天程序

    b2b模式的聊天工具 服务端: # 链接 while True: print('等待连接...') sock,adr = server_socket.accept() while True: try: ...

  7. Linux下C语言多线程,网络通信简单聊天程序

    http://www.cnblogs.com/zhuxianji/archive/2011/01/06/1928970.html

  8. 基于html5 localStorage , web SQL, websocket的简单聊天程序

    new function() { var ws = null; var connected = false; var serverUrl; var connectionStatus; var send ...

  9. Socket编程实践(3) 多连接服务器实现与简单P2P聊天程序例程

    SO_REUSEADDR选项 在上一篇文章的最后我们贴出了一个简单的C/S通信的例程.在该例程序中,使用"Ctrl+c"结束通信后,服务器是无法立即重启的,如果尝试重启服务器,将被 ...

随机推荐

  1. WebService附加到IIS调试,未命中断点

    写好了一个WebService,部署到IIS上,用浏览器访问发现并不能命中断点. 经过多次的查找发现是由于附加的代码类型选择错误. 下图由于错误的选择了托管代码,导致调试时不命中断点,勾选自动解决.

  2. 使用Oracle函数在创建表的时候自动加入生成的流水号 生成格式是:前缀+年月日+00000

    CREATE OR REPLACE FUNCTION fn_no_make(v_type VARCHAR2, v_number_col VARCHAR2, v_table_name VARCHAR2) ...

  3. Java 内存模型与线程

    when ? why ? how ? what ? 计算机的运行速度和它的存储和通信子系统速度的差距太大,大量的时间都花费在磁盘I/O .网络通信或者数据库访问上.如何把处理器的运算能力"压 ...

  4. mongodb数据库的导出与导入

    数据库的导出 导出类型为json,数据库:mapdb,集合:bike 字段:bikeId,lat,lng,current_time,source ,条件为source字段为ofo第一条数据 mongo ...

  5. BZOJ 1230 Usaco2008 Nov 开关灯

    [题意概述] 给出一个01序列,初始时序列全为0,每次有修改操作或询问操作,修改操作要求把L~R区间中的0变成1,1变成0,查询操作要求输出L~R区间的1的个数 [题解] 线段树. 每次区间修改把区间 ...

  6. JavaSE 学习笔记之Object对象(八)

    Object:所有类的直接或者间接父类,Java认为所有的对象都具备一些基本的共性内容,这些内容可以不断的向上抽取,最终就抽取到了一个最顶层的类中的,该类中定义的就是所有对象都具备的功能. 具体方法: ...

  7. noip模拟赛 radius

    分析:这道题实在是不好想,一个可以骗分的想法是假定要求的那个点在中心点上,可以骗得不少分.但是在边上的点要怎么确定呢?理论复杂度O(﹢无穷).答案一定是和端点有关的,涉及到最大值最小,考虑二分最大值, ...

  8. 清北学堂模拟赛d3t2 b

    分析:一道比较让人头疼的数学题. 先考虑怎么让分出来的三角形相似,先不考虑每个三角形的具体边长,设每个三角形的周长为li,则可知必然有一个数g = gcd{li},每一个三角形的周长都是g的倍数,这样 ...

  9. [bzoj3295][Cqoi2011]动态逆序对_主席树

    动态逆序对 bzoj-3295 Cqoi-2011 题目大意:题目链接. 注释:略. 想法:直接建立主席树. 由于是一个一个删除,所以我们先拿建立好的root[n]的权值线段树先把总逆序对求出来,接着 ...

  10. memcached集群

    借鉴:http://www.cnblogs.com/happyday56/p/3461113.html 首先说明下memcached存在如下问题 本身没有内置分布式功能,无法实现使用多台Memcach ...