socket编程实例一个简单的面向socket实例,错在哪里?

socket编程实例  时间:2021-06-09  阅读:()

如何进行 Socket 编程

Socket是网络上运行的两个程序间双向通讯的一端,它既可以接受请求,也可以发送请求,利用它可以较为方便的编写网络上的数据的传递。

在java中,有专门的socket类来处理用户的请求和响应。

利用SOCKET类的方法,就可以实现两台计算机之间的通讯。

这里就介绍一下在JAVA中如何利用socket进行网络编程。

在Java中Socket可以理解为客户端或者服务器端的一个特殊的对象,这个对象有两个关键的方法,一个是getInputStream方法,另一个是getOutputStream方法。

getInputStream方法可以得到一个输入流,客户端的Socket对象上的getInputStream方法得到的输入流其实就是从服务器端发回的数据流。

GetOutputStream方法得到一个输出流,客户端Socket对象上的getOutputStream方法返回的输出流就是将要发送到服务器端的数据流,(其实是一个缓冲区,暂时存储将要发送过去的数据)。

程序可以对这些数据流根据需要进行进一步的封装。

本文的例子就对这些数据流进行了一定的封装(关于封装可以参考Java中流的实现部分)。

一、建立服务器类 Java中有一个专门用来建立Socket服务器的类,名叫ServerSocket,可以用服务器需要使用的端口号作为参数来创建服务器对象。

ServerSocket server = new ServerSocket(9998) 这条语句创建了一个服务器对象,这个服务器使用9998号端口。

当一个客户端程序建立一个Socket连接,所连接的端口号为9998时,服务器对象server便响应这个连接,并且ept()方法会创建一个Socket对象。

服务器端便可以利用这个Socket对象与客户进行通讯。

Socket ing = ept() 进而得到输入流和输出流,并进行封装BufferedReader in = new BufferedReader(new InputStreamReader(ing.getInputStream())); PrintWriter out = new PrintWriter(ing.getOutputStream(),true); 随后,就可以使用in.readLine()方法得到客户端的输入,也可以使用out.println()方法向客户端发送数据。

从而可以根据程序的需要对客户端的不同请求进行回应。

关于VC++ socket如何实现聊天全双工

你这个程序采用udp发送/接收数据,并且使用了阻塞方式的Socket,这样在读数据时会一直等到读到数据后才能执行后面的步骤,写数据时也会等到将全部数据写完才执行后面的步骤。

修改这个程序首先要将创建的Socket改成异步读写的形式,然后使用select函数判断socket是否有数据可读和可以发送数据,并且udp发送的数据包不能过大,一包数据以不超过1392字节为宜。

一个简单的面向socket实例,错在哪里?

问题不少,看一下我修改后的代码,另外在exit前,应该把所有的socket都关闭,虽然默认的系统会在程序退出时自动帮你关掉,但这是一个好的编程习惯,应该自己在程序里关。

#include <sys/types.h> #include <sys/socket.h> #include &/in.h> #include <arpa/.h> #include <unistd.h> #include <stdio.h> #include <stdlib.h> #include <strings.h> #define PORT 6677 #define MAXCLIENT 3 int main(int argc,char* argv[]) { int serSock, newConnSock; struct sockaddr_in addr; int addr_len = sizeof(struct sockaddr_in); char msg[] = "e from the server"; int connectedClient[MAXCLIENT], cli; for(cli = 0;cli<MAXCLIENT;cli++) { connectedClient[cli]=0; } serSock = socket(AF_INET, SOCK_STREAM, 0); if(serSock<0) { perror("socket"); exit(1); } else { printf("socket created "); printf("socketd id: %d ",serSock); } bzero(&addr, sizeof(addr)); addr.sin_family = AF_INET; addr.sin_port = htons(PORT); addr.sin_addr.s_addr = htonl(INADDR_ANY); if (bind(serSock, (struct sockaddr*)&addr, sizeof(addr))<0) { perror("connect"); exit(1); } else { printf("connected. "); printf("local port: %d ", PORT); } if (listen(serSock, 3)<0) { perror("listen"); exit(1); } else { printf("listening...... "); } for (cli=0;cli<MAXCLIENT;cli++) { connectedClient[cli] = 0; } cli = 0; while(1) { newConnSock=ept(serSock, (struct sockaddr*)&addr, &addr_len); if (cli >= MAXCLIENT) { printf("socket reach maxsize %d, server ped, current socket %d: ", MAXCLIENT, cli); /* Should close newConnSock and connectedClient[] * before exiting */ exit(0); } if (newConnSock <= 0) { perror("ept"); } else { connectedClient[cli] = newConnSock; write(connectedClient[cli],msg,sizeof(msg)); printf("connected from %s ", _ntoa(addr.sin_addr)); printf("current socket: %d ",connectedClient[cli]); cli++; } printf("running for another loop... "); } }

Megalayer美国独立服务器配置及性能速度综合评测

Megalayer 商家在之前也有记录过,商家开始只有提供香港站群服务器和独立服务器,后来也有增加到美国独立服务器,以及前几天也有介绍到有增加香港VPS主机。对于香港服务器之前有过评测(Megalayer香港服务器配置一览及E3-1230 8GB服务器评测记录),这里申请到一台美国独立服务器,所以也准备简单的评测记录。目前市场上我们看到很多商家提供VPS或者云服务器基本上没有什么特别的,但是独立服...

wordpress投资主题模版 白银黄金贵金属金融投资网站主题

wordpress投资主题模版是一套适合白银、黄金、贵金属投资网站主题模板,绿色大气金融投资类网站主题,专业高级自适应多设备企业CMS建站主题 完善的外贸企业建站功能模块 + 高效通用的后台自定义设置,简洁大气的网站风格设计 + 更利于SEO搜索优化和站点收录排名!点击进入:wordpress投资主题模版安装环境:运行环境:PHP 7.0+, MYSQL 5.6 ( 最低主机需求 )最新兼容:完美...

PacificRack(19.9美元/年)内存1Gbps带vps1GB洛杉矶QN机房,七月特价优惠

pacificrack怎么样?pacificrack商家发布了七月最新优惠VPS云服务器计划方案,推出新款优惠便宜VPS云服务器采用的是国产魔方管理系统,也就是PR-M系列,全系基于KVM虚拟架构,这次支持Windows server 2003、2008R2、2012R2、2016、2019、Windows 7、Windows 10以及Linux等操作系统,最低配置为1核心2G内存1Gbps带宽1...

socket编程实例为你推荐
qq博客怎么开QQ博客啊视频技术短视频运营每天的工作是做什么?需要所学的技术都有什么方面?视频技术视频制作有前途吗腾讯年终奖腾讯工作怎么样网络电话永久免费打有没有永久免费打电话的网络电话啊?assemblyinfoasp.net这几个文件是干什么的?印度尼西亚国家代码谁知道世界各国的国家电话代码?assemblyinfoLOL的 X、L、CS 是什么意思labelforandroid:labelfor是什么意思kjava谁能告诉我KJAVA是什么意思和普通的JAVA程序有什么区别?
申请域名 域名主机基地 域名备案只选云聚达 l5639 mobaxterm ixwebhosting 卡巴斯基永久免费版 qingyun 有奖调查 电信虚拟主机 33456 闪讯官网 net空间 lamp怎么读 cdn网站加速 godaddy空间 国外代理服务器 asp空间 重庆联通服务器托管 湖南铁通 更多