# TermTCP CLI - Quick Start

## 60 Second Setup

### 1. Compile (30 seconds)
```bash
cd termtcp_cli
make -f Makefile_CLI
```

### 2. Run (5 seconds)
```bash
./termtcp
```

### 3. Connect (25 seconds)
```
> list                    # See available hosts
> connect 0              # Connect to first host
> Hello from TermTCP!    # Send a message
> disconnect             # Close connection
> quit                   # Exit
```

---

## What You Get

✅ Lightweight TCP terminal client  
✅ No GUI dependencies (CLI only)  
✅ Multiple host configuration  
✅ Session logging  
✅ Color output  
✅ ~400 lines of code  
✅ Single file, no external libs  

---

## First Steps

### 1. Build
```bash
make -f Makefile_CLI
./termtcp
```

First run creates: `~/.termtcprc`

### 2. Configure Hosts
Edit `~/.termtcprc`:
```
# Your hosts here
localhost 8011 My Local System
example.com 9000 Remote Server
```

### 3. Use It
```
> list              # Show hosts
> connect 0         # Connect
> Type anything     # Send to server
> disconnect        # Close connection
```

---

## Common Commands

```
connect [0-4]      Connect to host 0-4
disconnect         Disconnect
list               Show configured hosts
log on/off         Enable/disable logging
color on/off       Enable/disable colors
status             Show connection status
help               Show command help
quit               Exit program
```

---

## Command-Line Usage

```bash
# Auto-connect to host 0
termtcp -c 0

# Auto-connect with logging
termtcp -c 0 -l

# Disable colors
termtcp -n

# Show help
termtcp -h
```

---

## File Locations

| File | Purpose |
|------|---------|
| `~/.termtcprc` | Host configuration |
| `hostname_port_*.log` | Session logs (if enabled) |

---

## Building

### Requirements
- GCC/Clang
- Linux/macOS/BSD

### Commands
```bash
make -f Makefile_CLI         # Build
make -f Makefile_CLI run     # Build & run
make -f Makefile_CLI debug   # Debug build
make -f Makefile_CLI clean   # Clean
make -f Makefile_CLI install # Install
```

---

## Troubleshooting

| Problem | Solution |
|---------|----------|
| "Connection refused" | Check host/port in config |
| "Connection timeout" | Server might be down |
| Terminal frozen | Press Ctrl+C or type quit |
| Colors look wrong | Try `color off` |
| Can't find hosts | Check `~/.termtcprc` format |

---

## Configuration Format

File: `~/.termtcprc`

```
# Comments start with #
# Format: host port name

localhost 8011 My System
example.com 9000 Remote
```

That's it! No quotes needed.

---

## Real-World Examples

### Connect to BBS
```bash
# In ~/.termtcprc:
bbs.example.net 9000 Classic BBS

# Then:
termtcp
> connect 0
> help     (usually gets you started)
```

### Check Remote System
```bash
termtcp -c 0
> QUERY
> STATUS
> quit
```

### Debug Connection Issues
```bash
termtcp -c 0 -l
> [try to do something]
# Check the log file created
```

---

## Keyboard Shortcuts

```
Ctrl+C     Exit immediately
Enter      Send line to server
/command   Use / prefix for commands
```

Wait, that last one isn't real. Just type commands normally:
```
help               (actual command)
/help              (NOT needed)
```

---

## Features at a Glance

✅ Connect to TCP servers  
✅ Send/receive text  
✅ Multiple host profiles  
✅ Automatic session logging  
✅ Colored output (optional)  
✅ Configuration file support  
✅ Command system  
✅ Status display  

---

## Program Flow

```
Start
  ↓
Load ~/.termtcprc
  ↓
Show prompt
  ↓
User enters command
  ├─ "connect" → Connect to server
  ├─ "send data" → Send to server
  ├─ "log" → Start/stop logging
  └─ "quit" → Exit
  ↓
Repeat until quit
  ↓
Cleanup & exit
```

---

## Comparing CLI to GTK3 Version

**Use CLI when:**
- No GUI environment
- Lightweight needed
- Scripting/automation
- Remote connection
- Simple connectivity

**Use GTK3 when:**
- Visual interface needed
- Multiple simultaneous connections
- Port monitoring required
- Desktop environment available

---

## Tips & Tricks

### Auto-connect on startup
```bash
termtcp -c 0        # Connects to host 0
```

### Log everything
```bash
termtcp -c 0 -l     # Connects and starts logging
```

### Script with pipes
```bash
echo "QUERY" | termtcp -c 0
```

### Create alias
```bash
# In ~/.bashrc:
alias mybbс='termtcp -c 0'

# Then just:
mybbs
```

---

## Logging Details

When `log on` is enabled:

- File created: `hostname_port_YYYYMMDD_HHMMSS.log`
- Contains: All sent/received data with timestamps
- Format: `[HH:MM:SS] SEND/RECV: data`
- Location: Current working directory

Example:
```
[14:35:22] SEND: HELLO
[14:35:23] RECV: Welcome!
[14:35:24] SEND: QUERY
```

---

## Performance

| Metric | Value |
|--------|-------|
| Binary Size | ~40KB |
| Memory Usage | ~50KB |
| Startup Time | <100ms |
| CPU Usage | Minimal |
| Max Line | 512 chars |

---

## Getting Help

In the program:
```
> help              # Show commands
> status            # Show connection status
> list              # Show configured hosts
```

In the shell:
```bash
termtcp -h          # Show options
```

---

## Next Steps

1. ✅ Build: `make -f Makefile_CLI`
2. ✅ Run: `./termtcp`
3. ✅ Configure: Edit `~/.termtcprc`
4. ✅ Connect: Type `connect 0`
5. ✅ Use: Send and receive data
6. ✅ Log: Enable with `log on` if needed

---

## Quick Reference Card

```
START:      termtcp
SHOW HELP:  help
LIST HOSTS: list
CONNECT:    connect 0
SEND:       type anything
LOG ON:     log on
LOG OFF:    log off
COLORS ON:  color on
COLORS OFF: color off
STATUS:     status
EXIT:       quit
```

---

**You're ready!** Run `make -f Makefile_CLI && ./termtcp` 🚀

For more details, see: README_CLI.md
