#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. PC、h5项目接入第三方支付宝扫码登录、扫码付款

    首先介绍一下pc项目接入支付宝扫码支付. 1.pc.移动接入支付宝扫码支付. 其实这个逻辑很简单,前端所需要处理的不是很多,后台会给一个连接,前端只需要将要支付的订单id拼接在这个连接上,然后打开跳转 ...

  2. (C/C++学习)6.数组指针和指针数组

    说明:int (*p)[4] 和 int *p[4](数组指针和指针数组),如果你是一个初学者,也许当你看到这两个名词的时候,已经懵了.其实,只要你理解了其中的含义.这两个名词对你来说会相当简单并且很 ...

  3. input chrome下输入之后背景变为黄色的解决办法

    之所以Input输入之后背景原因色变为可恶的黄色,是因为在chrome 下input加上了input:-webkit-autofill这个属性,里面写的就是这个问题出现的原因 代码就是:input:- ...

  4. zk strom 本地环境启动命令

    bin/zkServer.sh statusbin/zkServer.sh startbin/storm nimbus &bin/storm ui &bin/storm drpc &a ...

  5. 一个电商项目的Web服务化改造2:现有项目的5个问题

         最近一直在做一个电商项目,需要把原有单系统架构的项目,改造成基于服务的架构,SOA.      有点挑战,做完了,会有很大进步, 1.现有项目的问题   1.1代码风格不统一     不同的 ...

  6. XOR Queries

    XOR Queries 时间限制: 1000ms   内存限制: 256M 描述 给出一个长度为n的数组C,回答m个形式为(L,R,A,B)的询问,含义为存在多少个不同的数组下标k∈[L,R]满足C[ ...

  7. Q - Period II

    For each prefix with length P of a given string S,if S[i]=S[i+P] for i in [0..SIZE(S)-p-1], then the ...

  8. .net performance optimize your C# app 读书笔记

    目录 序 作者简介 推荐人简介 感谢 本书简介 第一章  性能指标 第二章  性能测量 第三章  内部类型 第四章  垃圾回收机制 第五章  集合和泛型 第六章  并发和并行性 第七章  网络.I / ...

  9. Linux排查java程序占用cpu过高的线程代码

    分几步骤: 1.通过top,查出占用CPU过高的java进程 ,比如: pid :6666 2.通过ps -mp 6666 -o THREAD,tid,time| sort -n -k1 -r 查看此 ...

  10. HTML5:去除IE10中输入框和密码框的X按钮和小眼睛

    在IE10和之后的IE版本中,当在输入框和密码框中输入的时候,后面会自动出现X按钮和小眼睛,如下图所示:  令人苦恼的是,这个效果只有IE才有,其它浏览器是没有这个功能的.为了统一,我们就需要去掉这个 ...