socket聊天程序(多线程,控制台)

基于java的socket功能编写的一个局域网聊天工具     最近比较懒,好久没有更新博客了。这个代码早就写了,但是一直没有发出来,今天又更新了一下功能,发出来。算是我最近重新复习线程的一个总结吧。以前就看过java的多线程处理,但是一直有点迷迷糊糊的,不是很清楚,这次通过写这个程序,算是有了点头绪了。而且以前没有用过socket这个对象,也是初次接触,不错的东东,蛮有意思的。争取以后继续深化一下这方面。    程序分2部分,服务器端和客户端。服 阅读详情
#include <iostream>
#include <winsock2.h>

using namespace std;
#pragma comment(lib, "ws2_32.lib")

char g_ip[20]; //对方ip地址

DWORD WINAPI Receive(
	LPVOID lpParameter   // thread data
	)
{
	SOCKET *psock = (SOCKET*)lpParameter;
	char buf[100];
	SOCKADDR_IN recv_addr;
	int len = sizeof(SOCKADDR);
	char ip[30];
	while (1)
	{
		recvfrom(*psock, buf, 100, 0, (SOCKADDR*)&recv_addr, &len);
		strcpy(ip, inet_ntoa(recv_addr.sin_addr));
		cout << ip << " say:" << buf << endl;
	}
	return 0;
}

DWORD WINAPI Sendto(LPVOID lpParameter)
{
	SOCKET *psock = (SOCKET*)lpParameter;
	char buf[100];
	SOCKADDR_IN addr;
	addr.sin_family = AF_INET;
	addr.sin_addr.S_un.S_addr = inet_addr(g_ip);
	addr.sin_port = htons(6000);

	while (1)
	{
		cin.getline(buf, 100);
		sendto(*psock, buf, 100, 0, (SOCKADDR*)&addr, sizeof(SOCKADDR));
	}
	return 0;
}

int _tmain(int argc, _TCHAR* argv[])
{
	
	WORD wVersionRequested;
	WSADATA wsaData;
	int err;

	wVersionRequested = MAKEWORD( 2, 2 );

	err = WSAStartup( wVersionRequested, &wsaData );
	if ( err != 0 )
	{
		return 0;
	}

	if ( LOBYTE( wsaData.wVersion ) != 2 ||
		HIBYTE( wsaData.wVersion ) != 2 ) 
	{
			WSACleanup( );
			return 0; 
	}

	cout << "please input ip:";
	cin >> g_ip; //对方ip地址

	SOCKET sock = socket(AF_INET, SOCK_DGRAM, 0);
	SOCKADDR_IN addr;
	addr.sin_family = AF_INET;
	addr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
	addr.sin_port = htons(6000);

	if (bind(sock, (SOCKADDR*)&addr, sizeof(SOCKADDR)) == SOCKET_ERROR)
	{
		cout << "bind fail!" << endl;
		return 0;
	}

	HANDLE hThreadRecv = CreateThread(NULL, 0, Receive, &sock, 0, NULL);  //接收消息线程
	HANDLE hThreadSend = CreateThread(NULL, 0, Sendto, &sock, 0, NULL);   //发送小时线程
	WaitForSingleObject(hThreadRecv, INFINITE);                           //阻塞主线程
	return 0;
}

Java即时聊天程序实现教程 即时聊天程序(Instant Messaging Program)是一种允许用户通过计算机网络实时交换信息的应用程序。它提供了发送文本、表情、图片、视频等多媒体内容的功能,并且支持一对一、群组聊天等多种交流形式。即时聊天工具不仅提升了人们沟通的效率,还因其便捷性而成为商务、教育以及日常社交中的主要沟通方式。即时聊天程序通常具备以下基本功能:用户注册与登录:保证用户信息的安全和私密性。好友与群组管理:方便用户创建和管理社交圈。消息传输:实现实时文本消息的发送和接收。 阅读详情

相关推荐

基于 Python 控制台的 Socket 聊天管理系统

此程序实现了一个简单的 Socket 聊天系统,具有基础的多客户端通信功能,代码简洁清晰,非常适合作为课程设计作业。该程序包括服务端和客户端的代码,服务端负责管理客户端连接和消息转发,客户端用于与其他客户端通信。self.clients = {} # 存储连接的客户端 {address: socket}print(f"服务器启动,监听地址:{host}:{port}")print(f"成功连接到服务器:{host}:{port}")"""向所有客户端广播消息""""""接收来自服务端的消息"""

laoman456的博客 717

java 利用socket去访问一个页面,并在控制台输出

qq_27922171的博客 1333

简易聊天程序_java网络编程多线程

java编译的控制台版多人简易聊天程序,运用了ServerSocket和Socket网络编程,还用了多线程,I/O流等技术.可以私聊,可以群聊!

用消息在Win32控制台程序多线程间进行通讯

 #include #include //#include //#include #define UM_MSG1 (WM_USER + 1)#define UM_MSG2 (WM_USER + 2)DWORD WINAPI Thread1(LPVOID para){ DWORD dwThreadId = *(DWORD *)para; DWO

生命不息, 战斗不止! 3890

使用Socket和ServerSocket实现多人聊天的聊天室程序

基于TCP的网络编程,使用Socket和ServerSocket实现多人聊天的聊天室程序,Java网络编程章节训练的小程序

Socket和多线程的聊天室

没有可视化窗口,基于控制台输入的的聊天室,使用socket套接字和多线程完成在线聊天功能,支持私聊和群聊,功能简单请见谅。

小小的java socket聊天程序

      本程序是基于java语言的Socket聊天程序,采用TCP传输协议,实现两个人之间的信息交互。在形成最终结果之前,我经历了两个过程程序,两个过程均为半成品,他们反映了我整个课程设计中的思考过程,在一个较为系统思考过程后,socket思想一层一层加固,让我映像很深刻,收获很多。在此文档中,我将演示我两个过程程序的思考过程,然后对源代码进行讲解,但最终上传的代码为制成品。      在

xukunddp的专栏~ 心态好才是真的好 3458

C++ Socket 多线程多机聊天

本程序使用了Socket,多线程等技术,功能是在控制台中实现多机聊天的功能,环境为windows+vs2013

【网络编程】练习——UDP协议控制台聊天程序

需求:通过UDP传输方式,实现一个简单的控制台聊天程序 思路: 发送端: 1.建立UDP的socket服务 2.提供数据 并将数据封装到数据包中 3.通过socket服务的发送功能将数据包发出 4.关闭资源 接收端: 1.建立UDP的socket服务,设置端口号 2.定义一个数据包,存储接收到的字节数据 3.将受到的数据存入已定义好的数据包中 4.通过数据包对象的特有功能,将不同的数据取...

QiuBika_061的博客 430

C++基于socket的多线程聊天程序

Windows下基于socket的多线程群聊程序,环境是VC6.0。

简单多线程socket聊天室程序(c语言)

server.c client.c Makefile 在linux下编译通过,C语言编写,短小精练。 server实现数据转发,使用了socket中的accept,select,线程中的线程分离属性(PTHREAD_CREATE_DETACHED)等 client实现读和写的异步,也使用了线程分离属性。 直接实现多个client终端对话。 可做为新人学习的参考。

C++网络聊天室控制台版源代码

用C++和socket网络编程、多线程技术组成的网络聊天室控制台版,1000行之内。之所以在控制台运行而不是用MFC等图形库是为了方便从底层理解socket编程和多线程,只有从深入理解技术原理后才能在广泛的实际应用如鱼得水,而不局限于某个特定图形库提供的网络接口。 注意:因为是控制台,所以有些不可避免的显示错误(如输入内容过长影响界面等,但这些仅仅只是控制台上的局限,实际

梦幻DUO的游戏开发之路 6424

使用TCP协议实现多人网络聊天(带界面)

本资源采用的是TCP来实现聊天,而且是多人聊天,界面采用GUI进行设计,总体效果还可以

网络编程05:我终于模拟出了QQ聊天——基础篇

本篇文章主要用UDP基础知识来模拟两人聊天 需求分析 设计一个程序,实现两人聊天,两人可以相互发信息,接收对方的信息,以及退出聊天 设计分析 一个人既可以发送信息也可以接收信息——多线程** 给这个人设置两个线程,一个接收信息的线程,一个发送信息的线程,建立两个运行终端,执行这两个线程即可 这里设置了两个角色:老师和学生 package UDP多线程在线咨询; public class TalkStudent { public static void main(String[] args) {.

给bug点个赞 1353

Java聊天室—-多线程实现群聊、私聊、系统消息 (服务端完整代码奉上)

是不是试了很多次都没有达到自己想要的效果呢? 没关系,看到这你就已经有收获了 文章目录一、动图效果展示二、服务端代码(核心)三、bug吐槽四、分享交流 一、动图效果展示 二、服务端代码(核心) 光说不练歪把子 package socket_study03; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; import java.util.conc

当MATLAB遇见ROS2:一场跨平台实时仿真的技术融合与创新实践

本文探讨了MATLAB/Simulink与ROS2在跨平台实时仿真中的技术融合与创新实践。重点介绍了在Windows+WSL2异构环境下构建高可靠性联合仿真系统的架构设计、PX4仿真环境与DDS中间件的集成方法,以及MATLAB R2024b对ROS2深度集成的实战技巧,为复杂机器人系统的开发提供了高效解决方案。

rum55的博客 247

java控制台输入多个数,java实现的多人聊天(控制台输入)

在学习android时,想做一个多人聊天室,不知如何动手想先做一个纯java的简单多人聊天室,理理思路通过Socket套接字进行数据传输用到的知识点是:Socket,ServerSocket, 多线程服务器程序:import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import ja...

weixin_30699957的博客 362

手把手教你用HiNet实现图像隐藏:可逆神经网络实战指南(附代码)

本文提供了一份基于HiNet框架实现图像隐藏的实战指南。通过详细解析可逆神经网络原理,手把手指导环境搭建、模型构建、损失函数设计及训练流程,并附有完整代码。该方法利用单个可逆网络统一隐藏与恢复过程,结合小波变换提升隐蔽性,为信息隐藏应用提供了高效解决方案。

rgv234567的博客 433

计算机网络课设避坑指南:如何用Dev C++ 5.11快速完成聊天程序实验

本文提供了一份详细的Dev C++ 5.11实现网络聊天程序的避坑指南,涵盖开发环境配置、Winsock初始化、多线程处理等关键步骤。通过实战代码示例和常见问题解决方案,帮助计算机专业学生高效完成计算机网络课设,避免常见错误。

weixin_30505225的博客 313

【鼠标在不点击的情况下,直接移动到QT控件上不显示提示信息】

有时明明已经调用了setToolTips方法,鼠标移动到QT控件上仍然不会有提示信息,这时候就需要具体分析下。重点就是标红的这段话,大概意思就是。.h文件中加入鼠标移动事件的定义。.cpp文件中实现该事件。

ZTH_G的博客 2425

常见的十大量化投资策略(附源码)

量化投资策略是利用量化的方法,进行金融市场的分析、判断和交易的策略、算法的总称。著名的量化投资策略有以下10种(注:策略源码模板不能直接用于实盘交易,仅供探讨交流) 01、海龟交易策略 海龟交易策略是一套非常完整的趋势跟随型的自动化交易策略。这个复杂的策略在入场条件、仓位控制、资金管理、止损止盈等各个环节,都进行了详细的设计,这基本上可以作为复杂交易策略设计和开发的模板。 海龟交易策略源码:https://www.myquant.cn/docs/python_strategyies/110 0.

小壁虎的春天 2万+

【Java】Socket+多线程实现控制台聊天室

转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/5827212.html 另:具体代码实现已移植github:https://github.com/ygj0930/Chat-Room-in-Java ,大家fork之余记得给我个star呀~ 聊天室程序的结构图: 架构解释: Server服务器相当于一个中转站,Clie...

a631278993的博客 348

用Obsidian搭建个人知识库:AI时代如何构建你的第二大脑

AI 时代,真正有价值的不只是获取知识,而是沉淀属于自己的知识体系。本文从 Obsidian 安装、目录设计、双向链接、插件推荐到 AI 联动、多端同步,手把手教你打造高效、可持续进化的个人知识库,让知识真正为你所用。🧠

XiaoqiangClub的博客 472
上一篇: MFC编辑框如何改变字体的大小
下一篇: socket实现ping命令(控制台)
CButtonST
博客等级 码龄16年 42粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值