在客户端所在的目录新建一个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 ;
}

最新文章

  1. JavaScript 面向对象(一) —— 基础篇
  2. 转!!JavaBean,List,Map转成json格式
  3. java获取对应字节数的内容
  4. BZOJ 1827: [Usaco2010 Mar]gather 奶牛大集会 树形DP
  5. HDU 4393 Throw nails
  6. java,spring,tomcat,跨域设置
  7. 记录下用axios遇到的问题
  8. Vue通过路由 query传递参数
  9. JavaScript数组倒序函数reverse()
  10. MySQL设置默认编码
  11. sublime打开文本时会记忆上次关闭时鼠标停留的位置
  12. upper_bound()与lower_bound()的使用
  13. Django中的QuerySet
  14. Map和Bean的相互转换
  15. 16、Java并发编程:Timer和TimerTask
  16. grpc 安装以及墙的解决方法
  17. ScriptManager.RegisterStartupScript()方法和Page.ClientScript.RegisterStartupScript() 方法详解
  18. January 21 2017 Week 3 Saturday
  19. &quot;_dns_free_resource_record&quot;, referenced from:问题
  20. 监控Coherence成员的加入和离开集群事件

热门文章

  1. [D3 + AngularJS] 15. Create a D3 Chart as an Angular Directive
  2. mysql_convert_table_format 批量修改表引擎
  3. 24小时学通LINUX内核系列
  4. WebService学习笔记系列(一)
  5. Ⅰ.AngularJS的点点滴滴--引导
  6. 30种mysql优化sql语句查询的方法&lt;转&gt;
  7. awk用法举例
  8. ArcGIS API for Javascript配置
  9. MyBatis返回主键,MyBatis Insert操作返回主键
  10. CSS相对定位、绝对定位