初学socket,c语言写的简单局域网聊天
在客户端所在的目录新建一个IP.bwj的文件,写上服务端的IP,不要带空格,保存。双方都打开一个客户端和一个服务端就可以聊天了,(可以写自己的IP,自己跟自己聊。。)没有第三方服务器,服务端所在的电脑就是服务器。程序通过AF_INET协议族,监听7464端口,没写任何错误处理,这样便于突出主要矛盾嘛。。初学见笑。。
不知道死循环应该怎么退出,客户端可以通过输入的buffer写一个退出命令,不知道服务端怎么办,调用kbhit也不行,因为recvfrom一直在监听,我再想想。。
客户端
#include<stdio.h>
#include<winsock.h>
#pragma comment (lib,"wsock32.lib") int main()
{
char IPAdd[];
FILE *readIP = fopen("IP.bwj", "r");
fscanf(readIP, "%s", IPAdd);
fclose(readIP);
char buffer[];
WSADATA data;
WSAStartup(MAKEWORD(,), &data);
SOCKET mySocket;
struct sockaddr_in server;
int len = sizeof(server);
server.sin_family = AF_INET;
server.sin_port = htons();
server.sin_addr.s_addr = inet_addr(IPAdd);
mySocket = socket(AF_INET, SOCK_DGRAM, );
while()
{
scanf("%s", buffer);
if(strcmp(buffer, "exit") == )break;
sendto(mySocket, buffer, sizeof(buffer), ,(struct sockaddr*)&server, len);
}
closesocket(mySocket);
WSACleanup();
return ;
}
服务端
#include <stdio.h>
#include <winsock.h>
#pragma comment (lib, "wsock32.lib")
int main()
{
char buffer[];
WSADATA data;
WSAStartup(MAKEWORD(,), &data);
SOCKET mySocket;
struct sockaddr_in local;
struct sockaddr_in from;
local.sin_family = AF_INET;
local.sin_port = htons();
local.sin_addr.s_addr = INADDR_ANY;
mySocket = socket(AF_INET, SOCK_DGRAM, );
bind(mySocket, (struct sockaddr*)&local, sizeof(local));
int len = sizeof(from);
while()
{
recvfrom(mySocket, buffer, sizeof(buffer), , (struct sockaddr*)&from, &len);
printf("Received from %s :\n%s\n", inet_ntoa(from.sin_addr), buffer);
}
closesocket(mySocket);
WSACleanup();
return ;
}
初学socket,c语言写的简单局域网聊天的更多相关文章
- 用Go语言实现一个简单的聊天机器人
一.介绍 目的:使用Go语言写一个简单的聊天机器人,复习整合Go语言的语法和基础知识. 软件环境:Go1.9,Goland 2018.1.5. 二.回顾 Go语言基本构成要素:标识符.关键字.字面量. ...
- socket实例C语言:一个简单的聊天程序
我们老师让写一个简单的聊天软件,并且实现不同机子之间的通信,我用的是SOCKET编程.不废话多说了,先附上代码: 服务器端server.c #include <stdio.h> #incl ...
- 用c#写的一个局域网聊天客户端 类似小飞鸽
用c#写的一个局域网聊天客户端 类似小飞鸽 摘自: http://www.cnblogs.com/yyl8781697/archive/2012/12/07/csharp-socket-udp.htm ...
- 【阿菜做实践】利用go语言写一个简单的Pow样例
本篇博客的主要内容是用go写一个简单的Proof-of-Work共识机制,不涉及到网络通信环节,只是一个本地的简单demo.开发IDE用的是JB Golang. 整个项目的文件结构如下: PoWdem ...
- 用c语言写的简单计算器
这是自己在学习C语言,凭借自己的兴趣,将课本的知识运用后整理的关于C语言计算器的代码.计算器实现的功能有:加.减.乘.除.求余.功能简单,但对于初学者的我来说能把它写出来,排除每个错误依旧是个难题.前 ...
- 用python语言写一个简单的计算器
假如我们有这样一个式子: 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2 ...
- nc 局域网聊天+文件传输(netcat)
nc 局域网聊天+文件传输 nc的全程是netcat,这个工具非常好用. 有时候我们需要在局域网内传送一些文本消息或者文件的时候,通常的做法是安装一些局域网通讯软件,然后来做.其实不必要这样,使用nc ...
- 在windows下用C语言写socket通讯实例
原文:在windows下用C语言写socket通讯实例 From:Microsoft Dev Center #undef UNICODE #define WIN32_LEAN_AND_MEAN #in ...
- C# Socket编程实现简单的局域网聊天器
目录 前言 编码 服务端监听接口 客户端连接接口 文字发送接口 文件发送接口 信息接收接口(文字与文件) 使用 注意事项 源码 前言 最近在学习C# Socket相关的知识,学习之余,动手做了一个简单 ...
随机推荐
- POJ 1182 (经典食物链 /并查集扩展)
(參考他人资料) 向量偏移--由"食物链"引发的总结 http://poj.org/problem?id=1182这道食物链题目是并查集的变型.非常久曾经做的一次是水过的,这次 ...
- dig命令 安装
获取容器 dns 信息 需要安装dig 命令 yum install bind-utils
- [Javascript] MetaProgramming: function name
Each function should have a 'name' property. It can be anonymous, empty, the same as function name, ...
- RFC 文档(中文与英文)
http://man.chinaunix.net/develop/rfc/default.htm https://www.rfc-editor.org/retrieve/ http://www.iet ...
- /dev/tty 与 /dev/pts
打开3个bash会话窗口 [root@server1 fd]# cd /proc/7489/fd[root@server1 fd]# ll总用量 0lrwx------ 1 root root 6 ...
- JDK中DNS缓存的分析
在JAVA中使用InetAddress.getByName(String host) 方法来获取给定hostname的IP地址.为了减少DNS解析的请求次数,提高解析效率,InetAddress中提供 ...
- 从源码角度理解android动画Interpolator类的使用
做过android动画的人对Interpolator应该不会陌生,这个类主要是用来控制android动画的执行速率,一般情况下,如果我们不设置,动画都不是匀速执行的,系统默认是先加速后减速这样一种动画 ...
- 怎么在我们的App中集成条码扫描功能?
现在很多App都有条码扫描功能,有的手机比如某米在照相机中集成了条码扫描功能,但是还有一部分手机没有这样的集成,比如韩国某星,需要自己下载一个条码扫描App.今天我们就来看看怎么在自己的App中集成一 ...
- OpenCV 2 Computer Vision Application Programming Cookbook读书笔记
### `highgui`的常用函数: `cv::namedWindow`:一个命名窗口 `cv::imshow`:在指定窗口显示图像 `cv::waitKey`:等待按键 ### 像素级 * 在灰度 ...
- UESTCOJ-BiliBili, ACFun… And More!(水题)
BiliBili, ACFun… And More! Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Ja ...