linux下,socket服务器和客户端TCP方式建立了连接,如何使它们之间相互发送消息?
1可能是在获取客户端的ip和端口时,处理出现问题,导致无法正确发送到客户端。
2客户端是否使用固定的端口来接收服务器信息,或服务器是否正确发送到客户端的相应的端口。
3通过上面分析,最大可能是在处理端口出现问题,请重新检查。
4实在不行,最好使用抛出异常方法来捕获错误消息,或是通过一步一步调试分析数据发送过程。
通过SecureCRT作为客户端连接Linux服务器的方法。
步骤1:确认Linux服务器sshd服务已经启动
通过输入命令:service sshd status命令来查看
步骤2:下载SecureCRT工具
百度上输入securecrt,搜索第一个就是官方下载,选择“普通下载”
步骤3:配置SecureCRT
1、双击"SecureCRTexe"程序
2、第一次运行SecureCRT,需要设置SecureCRT配置文件的文件夹,点击“确定”选择它默认的文件夹
3、连接界面中,点击”新建会话“按钮,弹出右边会话框,选择”SSH2"协议
4、填写好Linux服务器的主机名、端口、防火墙、用户名,点击“下一步”
5、填写“会话名称”,单击“完成”
步骤4:通过SecureCRT连接Linux服务器
1、选择刚刚建好的会话,点击"连接"按钮
2、新建主机密钥界面,选择"接受并保存"按钮
3、输入安全外壳密码,点击"确定"
解决办法:
1在客户端n=read(socketfd,buff,1023);代码之前加上memset(buff,0,sizeof(buff));,这是保证收到较短数据(使用TCP你不能保证每次接收的数据和发送的数据时等长的),打印也是正确的;
2将客户端buff[n+1]+='\0';修改为buff[n]='\0';,这是因为n是下标,已经是最后一个位置了;
3将服务器端buff[n+1]+='\0';修改为buff[n]='\0';,这是因为n是下标,已经是最后一个位置了,而且和第2)一样,那个加号也要去掉,应该是笔误吧;
4最大的问题,将服务器端write(connectfd,buff,1023);,你怎么能够保证收到1023个字符呢?也应该将while中条件移出作为WHILE中的一条语句,而且加上前面所述的memset语句,而将这里的write(connectfd,buff,1023);修改为write(connectfd,buff,strlen(buff))。
祝共同进步!
你的使用场景是什么?在shell环境还是其它?
如果客户端可以使用ssh登陆服务器,可以直接使用scp命令拷贝文件。
scp SrcFileName username@ServerIP:/path/newName
如果服务器sshd端口不是22,需要使用-P port指定端口
如果是目录,需要加选项-r
0条评论