WinSocket简单聊天程序客户端
#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简单聊天程序客户端的更多相关文章
- Socket聊天程序——客户端
写在前面: 上周末抽点时间把自己写的一个简单Socket聊天程序的初始设计和服务端细化设计记录了一下,周二终于等来毕业前考的软考证书,然后接下来就是在加班的日子度过了,今天正好周五,打算把客户端的详细 ...
- Android 网络编程基础之简单聊天程序
前一篇讲了Android的网络编程基础,今天写了一个简单的聊天程序分享一下 首先是服务端代码: package com.jiao.socketdemo; import java.io.Buffered ...
- websocket实现简单聊天程序
程序的流程图: 主要代码: 服务端 app.js 先加载所需要的通信模块: var express = require('express'); var app = express(); var htt ...
- boost asio异步读写网络聊天程序客户端 实例详解
boost官方文档中聊天程序实例讲解 数据包格式chat_message.hpp <pre name="code" class="cpp">< ...
- Java网络编程--简单聊天程序
背景 毕业设计前的练手,学校小比赛中的一个题目. 开发环境 Java(eclipse)+Mysql 简介 使用Java+Mysql开发以个简单的聊天工具,在本次项目中实现了: 1. 用户登录(客户端至 ...
- Python使用Socket写一个简单聊天程序
b2b模式的聊天工具 服务端: # 链接 while True: print('等待连接...') sock,adr = server_socket.accept() while True: try: ...
- Linux下C语言多线程,网络通信简单聊天程序
http://www.cnblogs.com/zhuxianji/archive/2011/01/06/1928970.html
- 基于html5 localStorage , web SQL, websocket的简单聊天程序
new function() { var ws = null; var connected = false; var serverUrl; var connectionStatus; var send ...
- Socket编程实践(3) 多连接服务器实现与简单P2P聊天程序例程
SO_REUSEADDR选项 在上一篇文章的最后我们贴出了一个简单的C/S通信的例程.在该例程序中,使用"Ctrl+c"结束通信后,服务器是无法立即重启的,如果尝试重启服务器,将被 ...
随机推荐
- python socket 接口
一.简介 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求.socket起 ...
- Python 内置函数 day4
import random s = 'abczfg' st= {3,4,9,1,8} print(dir(random))#打印模块内的方法,输出模块/变量可以调用的方法 print(dir(s))# ...
- flask之配置文件的加载和动态url的使用
七行代码实现一个flask app from flask import Flask app = Flask(__name__) @app.route('/') def helloworld(): re ...
- [luogu2591 ZJOI2009] 函数
传送门 Solution 画图找规律.. Code //By Menteur_Hxy #include <cstdio> #define min(a,b) ((a)>(b)?(b): ...
- Centos 7 关闭firewall防火墙启用iptables防火墙
一.关闭firewall防火墙 1.停止firewall systemctl stop firewalld.service 2.禁止firewall开机启动 systemctl disable fir ...
- tipsText表单验证(注册)
注册表单验证脚本 <script src="/assets/skins/js/jquery-1.11.2.min.js"></script> <scr ...
- 【Codeforces 1114C】Trailing Loves (or L'oeufs?)
[链接] 我是链接,点我呀:) [题意] 问你n!的b进制下末尾的0的个数 [题解] 证明:https://blog.csdn.net/qq_40679299/article/details/8116 ...
- 【codeforces 758D】Ability To Convert
[题目链接]:http://codeforces.com/contest/758/problem/D [题意] 给你一个n进制的数k; 问你它可能的最小的十进制数是多少; [题解] 从右往左; 获取数 ...
- poj 3621最优比例生成环(01分数规划问题)
/* 和求最小生成树差不多 转载思路:http://www.cnblogs.com/wally/p/3228171.html 思路:之前做过最小比率生成树,也是属于0/1整数划分问题,这次碰到这道最优 ...
- extjs 4 chart 时间轴格式的处理
var dayStore = Ext.create('Ext.data.JsonStore', { fields: [{ name: 'name', type: 'date', dateFormat: ...