client|server 最简单的聊天
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <netinet/in.h>
int main()
{
int sc = ;
int ret = ;
int fd = ;
unsigned char data[] = {};
sc = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(sc < ){
perror("socket");
return ;
}
struct sockaddr_in gg;
gg.sin_family = AF_INET;
gg.sin_port = htons();
gg.sin_addr.s_addr = inet_addr("192.168.31.238"); //这里写上自己的IP,因为访问者肯定要写主机的IP对吧。 ret = bind(sc, (struct sockaddr *)&gg, );
if(ret < ){
perror("bind");
return ;
} ret = listen(sc, );
if(ret < ){
perror("listen");
return ;
} struct sockaddr_in nfd;
int nfd_len = ;
fd = accept(sc, (struct sockaddr *)&nfd, &nfd_len);
if(ret < ){
perror("accept");
return ;
} ret = recv(fd, data, , );
if(ret < ){
perror("recv");
return ;
} printf("client say : %s\n", data);
close(sc);
close(nfd);
}
#include <stdio.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <string.h>
#include <netinet/in.h> int main()
{
int ret = ;
int fd = ;
int sc = ;
unsigned char data[] = {};
unsigned char arr[] = {};
sc = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(sc < ){
perror("socket");
return ;
} struct sockaddr_in mm;
mm.sin_family = AF_INET;
mm.sin_port = htons();
mm.sin_addr.s_addr = inet_addr("192.168.31.154");; ret = connect(sc, (struct sockaddr *)&mm, );
if(ret < ){
perror("connect");
return ;
}
struct sockaddr_in gg;
gg.sin_family = AF_INET;
gg.sin_port = htons();
gg.sin_addr.s_addr = inet_addr("192.168.31.238");; ret = bind(sc, (struct sockaddr *)&gg, );
if(ret < ){
perror("bind");
return ;
} ret = listen(sc, );
if(ret < ){
perror("listen");
return ;
} struct sockaddr_in nfd;
int nfd_len = ;
fd = accept(sc, (struct sockaddr *)&nfd, &nfd_len);
if(ret < ){
perror("accept");
return ;
}
while(){
read(, data, ); ret = send(sc, data, , );
if(ret < ){
perror("send");
return ;
}
ret = recv(fd, arr, , );
if(ret < ){
perror("recv");
return ;
} printf("client say : %s\n", arr); } close(sc); }
client|server 最简单的聊天的更多相关文章
- Android简单的聊天室开发(client与server沟通)
请尊重他人的劳动成果.转载请注明出处:Android开发之简单的聊天室(client与server进行通信) 1. 预备知识:Tcp/IP协议与Socket TCP/IP 是Transmission ...
- NetMQ(ZeroMQ)Client => Server => Client 模式的实现
ØMQ (也拼写作ZeroMQ,0MQ或ZMQ)是一个为可伸缩的分布式或并发应用程序设计的高性能异步消息库.它提供一个消息队列, 但是与面向消息的中间件不同,ZeroMQ的运行不需要专门的消息代理(m ...
- ASP.NET Signalr 2.0 实现一个简单的聊天室
学习了一下SignalR 2.0,http://www.asp.net/signalr 文章写的很详细,如果头疼英文,还可以机翻成中文,虽然不是很准确,大概还是容易看明白. 理论要结合实践,自己动手做 ...
- SignalR循序渐进(一)简单的聊天程序
前阵子把玩了一下SignalR,起初以为只是个real-time的web通讯组件.研究了几天后发现,这玩意简直屌炸天,它完全就是个.net的双向异步通讯框架,用它能做很多不可思议的东西.它基于Owin ...
- socket实例C语言:一个简单的聊天程序
我们老师让写一个简单的聊天软件,并且实现不同机子之间的通信,我用的是SOCKET编程.不废话多说了,先附上代码: 服务器端server.c #include <stdio.h> #incl ...
- 通过python 构建一个简单的聊天服务器
构建一个 Python 聊天服务器 一个简单的聊天服务器 现在您已经了解了 Python 中基本的网络 API:接下来可以在一个简单的应用程序中应用这些知识了.在本节中,将构建一个简单的聊天服务器.使 ...
- 深入浅出 Redis client/server交互流程
综述 最近笔者阅读并研究redis源码,在redis客户端与服务器端交互这个内容点上,需要参考网上一些文章,但是遗憾的是发现大部分文章都断断续续的非系统性的,不能给读者此交互流程的整体把握.所以这里我 ...
- 简单的聊天室代码php+swoole
php swoole+websocket 客户端代码 <!DOCTYPE html> <html> <head> <title></title&g ...
- C#编写简单的聊天程序
这是一篇基于Socket进行网络编程的入门文章,我对于网络编程的学习并不够深入,这篇文章是对于自己知识的一个巩固,同时希望能为初学的朋友提供一点参考.文章大体分为四个部分:程序的分析与设计.C#网络编 ...
随机推荐
- HDU 1328 IBM Minus One
IBM Minus One Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- Android Studio 项目目录结构 英文版
I don't know if this is because of the Gradle Build System (I'd wager it is), but I'll tell you what ...
- 泛型编程中的Concept, Model和Policy
A crude explanation Concept A set of requirements on a type, e.g. a RandomAccessible concept require ...
- (转)解决JSP路径问题的方法(jsp文件开头path, basePath作用)
在JSP中的如果使用 "相对路径" 则有可能会出现问题. 因为 网页中的 "相对路径" , 他是相对于 "URL请求的地址" 去寻找资源. ...
- IO-04. 混合类型数据格式化输入
/** *A4-IO-04. 混合类型数据格式化输入 *C语言实现 *测试已通过 */ #include "stdio.h" int main() { float m1,m2; i ...
- intial-scale=1的含义
meta name="viewport" content="width=device-width,initial-scale=1.0" 解释 <meta ...
- linux日志(常用命令)
LinuxIDERedHat防火墙活动 cat tail -f 日 志 文 件 说 明 /var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志 ...
- struts2之动态方法调用(转)
转自:http://blog.csdn.net/longwentao/article/details/6940289 当我们访问一个Action时,默认是访问execute()方法,但当在一个Acti ...
- Oracle EBS-SQL (WIP-13):检查任务组件未选MRP净值.sql
select WE.WIP_ENTITY_NAME 任务号, MFG_LOOKUPS_WJS. ...
- Oracle EBS-SQL (PO-5):采购订单控制信息查询.sql
select distinct pla.po_header_id, --pha.type_lookup_code, pha.segment1 采购订单号, appf.full_name ...